文档介绍:第4章继承性和多态性
1
继承性和多态性
主要内容
继承性
派生类的定义
super关键字
protected和final关键字
多态性
抽象类和接口
抽象类
接口
初始化块
2
继承性和多态性
继承性
类具有继承性,子类对父类的继承关系体现了现实世界中特殊和一般的关系。通过继承可以更有效地组织程序结构,明确类间关系,并充分利用已有的类来完成更复杂、深入的开发。
派生类的定义
。
Java语言中派生类的定义格式如下:
示例:
class <子类> extends <唯一的父类名>
{
<类定义体>
}
3
继承性和多态性
super关键字
1. 数据成员的隐藏
数据成员的隐藏是指在子类中重新定义一个与父类中已定义的数据成员名完全相同的数据成员,即子类拥有了两个相同名字的数据成员,一个是继承父类的,另一个是自己定义的。
当子类要操作继承自父类的同名数据成员时,可使用关键字super引导。
2. 成员方法的覆盖
子类可以重新定义与父类格式完全相同(包括方法名、方法形参的个数和类型、方法返回值的类型)的成员方法,实现对父类方法的覆盖。
4
继承性和多态性
关于方法覆盖
只有当实例方法能被访问时,才能进行方法覆盖。私有方法不能被覆盖.
静态方法(类方法)能被继承,但不能被覆盖。
子类在重新定义父类已有的方法时,应保持与父类完全相同的方法名、返回值类型和参数列表,否则就不是方法的覆盖,而是子类定义自己特有的方法,与父类的方法无关。
5
继承性和多态性
3. super关键字
super表示的是当前对象的直接父类对象,是当前对象的直接父类对象的引用。
super的使用方法有三种:
(1) 访问直接父类隐藏的数据成员,其使用形式如下:
(2) 调用直接父类中被覆盖的成员方法,其使用形式如下:
(参数)
(3) 调用直接父类的构造方法,其使用形式如下:
super(参数)
示例:
6
继承性和多态性
protected和final关键字
1. protected关键字
用protected修饰的成员变量可以被三种类所引:该类自身、与它在同一个包中的其它类及在其它包中的该类的子类。
2. final关键字
使用final关键字可以定义常量。
定义类时,在class关键字前加关键字final,表示此类是最终类,不能被其它类继承,不能做父类。
用final修饰成员方法,表示此方法不能被它的子类覆盖。
7
继承性和多态性
3. native关键字
native修饰的方法称为本地方法,此方法使用的目的是为了将其它语言(例如,C、C++、FORTRAN、汇编等)嵌入到Java语言中。这样可以充分利用已经存在的其它语言的程序功能模块,避免重复编程。
8
继承性和多态性
多态性
多态是面向对象程序设计语言的一个重要特性,在Java中,可以在同一类或不同类中定义名称相同但是操作不同的多个方法,多态性指的是运行时判断应该执行哪个方法代码的能力,这种能力也叫动态绑定。
在Java语言中,多态性分为编译时多态性和运行时多态性。编译时的多态性是通过方法重载实现的,Java虚拟机根据传递给方法的参数个数和类型决定调用哪个重载方法。
9
继承性和多态性
运行时的多态性是Java多态性的最重要的体现,在Java语言的继承关系中,子类对象与父类对象之间有一个重要特性:在任何需要父类对象的地方,都可以使用子类对象来代替,即子类对象可以作为父类对象来使用。一个对象可以通过引用子类的实例来调用子类的方法,通常,方法在父类中定义,在子类中覆盖,子类中调用哪个方法是在运行时决定的,取决于对象的类型,称为运行时的多态性。
示例:
10
继承性和多态性