- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
抽象类定义和使用
1、课程名称:抽象类的定义及使用
2、知识点
2.1、上次课程的主要知识点
对象多态性总结如下:
· 向上转型(90%):为了实现参数类型的统一,但是向上转型一定要与方法覆写产生关联;
· 向下转型(1%):为了调用子类特殊的方法实现,但是向下转型前必须要首先发生向上转型,会存在操作的安全隐患,可以使用instanceof进行判断,但是不推荐这样使用;
· 不转型(9%):为了方便操作直接使用系统类或者是一些功能类,例如:String、简单Java类。
2.2、本次预计讲解的知识点
1、 抽象类的基本定义;
2、 抽象类的使用原则。
3、具体内容(★★★★★★★★★★★)
不会抽象类与接口,Java = 没学。
3.1、抽象类的基本概念
如果说现在在一个类之中需要定义一个没有方法体的方法,那么可以利用abstract关键字来进行抽象方法的定义,而包含有抽象方法的类就可以使用abstract来定义成为抽象类。
类的核心组成:属性、方法,但是在学习完继承操作之后,会发现子类存在有一种覆写父类方法的机制,而且这一机制直接与对象的多态性有关。于是这样就会出现一个问题:假设现在使用的是普通类,并且在这个类里面有一个print()方法print()。
class A {
public void print() {
System.out.println(Hello World !) ;
}
}
但是这个A类在设计之初有一个要求,希望继承它的子类一定要覆写这个print()方法。但事实上,这个时候的子类完全可以灵活的选择是否需要覆写方法。但是由于只是一个普通方法,所以对于子类是否覆写没有任何的要求,于是这样就会出现一个漏洞,父类无法强制要求子类覆写方法。
如果只依靠普通类的继承,那么根本就不能够对子类产生限制,所以就可以利用抽象类和抽象方法来解决此类问题。
范例:定义抽象类
abstract class A {
public void fun() {
System.out.println(*******************************) ;
}
public abstract void print() ; // 没有方法体,使用abstract声明
}
抽象方法的特点:一个是使用了abstract关键字定义,另外一个是方法的后面没有“{}”,表示没有方法体。
范例:错误的使用抽象类
public class TestDemo {
public static void main(String args[]) {
A a = new A() ;
}
}
本处直接采用了关键字new实例化了抽象类对象,但是在程序编译的时候就会出现如下的错误提示信息。
抽象类是不能够直接进行对象实例化操作的。因为一旦类的对象实例化了,就意味着可以调用类中的所有方法了,但是抽象方法只是一个声明,并没有具体的方法体。所以在实际的开发之中,对于抽象类的使用原则如下:
· 抽象类必须有子类,子类利用extends关键字来继承抽象类,一个子类只能够继承一个父类;
· 抽象类的子类(如果不是抽象类),那么必须要覆写抽象类中的全部抽象方法;
· 抽象类可以利用对象的向上转型机制,通过子类对象进行实例化操作。
abstract class A {
public void fun() {
System.out.println(*******************************) ;
}
public abstract void print() ; // 没有方法体,使用abstract声明
}
class B extends A {
public void print() {
System.out.println(这个方法是强制子类要覆写的方法。) ;
}
}
public class TestDemo {
public static void main(String args[]) {
A a = new B() ; // 向上转型
a.print() ; // 被子类所覆写过的方法
}
}
抽象类与普通类相比最大的好处是强制定义了子类的实现要求。
本质上讲抽象类就是比普通类多了一些抽象方法的定义而已。
在实际的设计之中,父类的设计是最重要的,普通类与抽象类相比,明显抽象类的约束更加的严格,所以在实际的开发之中,不会几乎不会出现普通类定义子类的情况,大多数都是继承抽象类。
3.2、抽象类的相关说明
整个的设计结构里面多了抽象类的定义,那么多了一个定义之后,就需要与原始的结构有一些对比。
1、 抽象类不能使用final关键字来定义,因为抽象类必须有子类,而f
您可能关注的文档
- 我院2013年门急诊处方点评和不合理用药分析_李亚昙.pdf
- 房地产价格报告和价格表制作.ppt
- 房地产建筑企业营改增税收影响和风险管理.ppt
- 第一讲 广告美学序言 把彩虹颜色,借给云雾人生.ppt
- 第一部分 多元线性回归模型与扩展.ppt
- 战略研讨和平衡计分卡培训材料.ppt
- 房地产合同和支付管理系统简介_201403.pdf
- 第七章二叉树与三叉树期权定价方法.doc
- 房地产评估风险和防范.doc
- 房地产开发部门职能和岗位设置.doc
- 保险学期末复习重点.doc
- 公安个人年度工作总结7篇.docx
- 睿达RDCAM激光雕刻切割软件V8.0操作说明书.pdf
- 骐麟 BWT20 双摆手持激光清洗系统用户手册V1.4.pdf
- PAL_Mega_Drive_Model_1_维修操作手册.pdf
- 荧光定量PCR实验原理及实验设计、上机操作培训.pdf
- 免疫荧光(IF)的操作技巧及难点解析 (1).pdf
- 骐麟 BWT20 双摆手持激光焊接系统用户手册 V10.pdf
- BEST FC300 High-Performance Frequency Inverter Series 用户操作说明书手册.pdf
- RDC644XG Laser Controller 用户操作说明书手册.pdf
文档评论(0)