单元2面向对象程序设计(下).ppt
《单元2面向对象程序设计(下).ppt》由会员分享,可在线阅读,更多相关《单元2面向对象程序设计(下).ppt(33页珍藏版)》请在优知文库上搜索。
1、第二章第二章面向对象程序设计本章内容l2.1类与对象l2.2构造方法l2.3类的继承l2.4抽象类、接口、枚举类型l2.5多态2.3类的继承l继承概述多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。通过extends关键字可以实现类与类的继承class 子类名 extends 父类名 单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的新成员。2.3类的继承l通过一个具体案例来演示代码案例1:学生类和老师。定义两个功能(吃饭,睡
2、觉)案例2:加入人类后改进。l继承的好处提高了代码的复用性多个类相同的成员可以放到同一个类中提高了代码的维护性如果功能的代码需要修改,修改一处即可让类与类之间产生了关系,是多态的前提其实这也是继承的一个弊端:类的耦合性很强Java中继承的注意事项l子类只能继承父类所有非私有的成员(成员方法和成员变量)其实这也体现了继承的另一个弊端:打破了封装性l子类不能继承父类的构造方法,但是可以通过super(后面讲)关键字去访问父类构造方法。l不要为了部分功能而去继承父类与子类l案例演示子父类中同名和不同名的成员变量l结论:在子类方法中访问一个变量首先在子类局部范围找然后在子类成员范围找最后在父类成员范围
3、找(肯定不能访问到父类局部范围)如果还是没有就报错。(不考虑父亲的父亲)父类与子类lsuper的用法和this很像this代表本类对应的引用。super代表父类存储空间的标识(可以理解为父类引用)l用法(this和super均可如下使用)l访问成员变量lthis.成员变量super.成员变量l访问构造方法(子父类的构造方法问题讲)lthis()super()l访问成员方法(子父类的成员方法问题讲)lthis.成员方法()super.成员方法()父类与子类l子类中所有的构造方法默认都会访问父类中空参数的构造方法l为什么呢?因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,
4、一定要先完成父类数据的初始化。每一个构造方法的第一条语句默认都是:super()父类与子类l如何父类中没有无参构造方法,该怎么办呢?子类通过super去显示调用父类其他的带参的构造方法子类通过this去调用本类的其他构造方法本类其他构造也必须首先访问了父类构造一定要注意:super()或者this(.)必须出现在第一条语句山否则,就会有父类数据的多次初始化l看程序写结果面试题lthis关键字和super关键字分别代表什么?以及他们各自的使用场景和作用。父类与子类l案例演示子父类中同名和不同名的成员方法l结论:通过子类对象去访问一个方法首先在子类中找然后在父类中找如果还是没有就报错。(不考虑父亲
5、的父亲)2.3类的继承l方法重写概述子类中出现了和父类中一模一样的方法声明,也被称为方法覆盖,方法复写。使用特点:如果方法名相同,最终使用的是子类自己的。l方法重写的应用:当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。2.3类的继承l方法重写的注意事项父类中私有方法不能被重写子类重写父类方法时,访问权限不能更低父类静态方法,子类也必须通过静态方法进行重写。(其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解)面试题l方法重写和方法重载的区别?方法重载能改变返回值类型吗?Overloa
6、dOverride2.3类的继承lJava只支持单继承,不支持多继承。一个类只能有一个父类,不可以有多个父类。class SubDemo extends Demo /okclass SubDemo extends Demo1,Demo2./errorlJava支持的继承体系class Aclass B extends Aclass C extends B继承练习l学生案例和老师案例讲解使用继承前使用继承后父类中成员private修饰,子类如何访问呢? 可以通过可以通过super关键字访问父类的带参构造方法。关键字访问父类的带参构造方法。final关键字lfinal关键字是最终的意思,可以修饰类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单元 面向 对象 程序设计