大家好,我叫何先振。今天让我们接着讲Java的面向对象。本期的讲解是接着前面第9和10讲的Java面向对象知识,如果前面的两讲没看建议先看完前面的两讲。
一.面向对象的继承性
1.继承的好处:
减少了代码的冗余、便于功能的扩展、为之后的多态性的使用提供了前提。
2.继承的格式:
class A extends B{ }
例如:学生类继承了人类。
那么学生类就有了人类的属性和方法。例如:Person类有名字、年龄的两个属性。
我创建了学生类的对象,因为学生类用extends继承了人类,就可以使用人类的属性和方法。
A:子类、派生类、subclass。例如:
Student类就叫做子类、或者叫派生类、或者叫subclass
B:父类、超类、基类、superclass,例如:
Person类就叫做父类、或者叫超类、或者叫基类、superclass。
体现:一旦子类A继承父类B以后,子类中就获取了父类B中声明的所有属性和方法。Student类可以使用父类Person的属性和方法。
特别的,父类中声明为private的属性和方法,子类继承父类以后,仍然认为获取了父类中私有的结构。只是因为封装性的影响,使得子类不能直接调用父类的结构而已。
父类中Person的name属性是私有的,并不影响Student类的继承。
Student还是继承了name属性和get,set方法。只是因为封装性的原因,测试类ExtendsTest不能直接调用属性,而是通过set赋值、get获取。
子类继承父类以后,子类还可以声明特有的属性和 方法。实现功能的扩展。
继承了Person,还可以写一些Person类没有的方法和属性。实现了Student类功能的扩展。
子类和父类的关系,不同于子集和集合的关系。这里的子类功能会更丰富。因为extends意思本身就有延展、扩展的意思。
3.Java中关于继承的规定
一个类可以被多个子类继承。
Student类可以继承Person。
Worker类也可以继承Person。
Person可以被多个类继承。
Java中类的单继承性:一个类只能有一个父类。
一个类只有一个父类,不能继承多个父类,就像一个儿子只能有一个父亲。
一个子类有多个父类是不允许的。
子父类是一个相对的概念,Java可以支持多层继承。
比如学生类继承人类,高中生类继承学生类。那么高中生继承了学生类,学生类继承了人类。人类>学生类>高中生类。高中生类也可以使用人类中的方法和属性。
子类直接继承的父类叫直接父类。例如:HighStudent继承了Student。
间接继承的父类叫间接父类。例如:Student继承了Person,HighStudent继承了Student,那么HighStudent的间接父类是Person
子类继承父类以后,就获取了直接父类以及间接父类中声明的属性和方法。
可以使用间接父类的属性和方法。
如果我们没有显式的声明一个类的父类的话,则此类继承于java.lang.Object类。可以使用之前Eclipse的快捷键Ctril+T来获取类的继承关系结构。Person类继承了Object类。
所有的类都直接或者间接的继承了Object(除本身java.lang.Object类)。
意味着,所有的java类具有java.lang.Object类声明的功能。
以上是本期内容, 下期讲Java面向对象方法的重写。