目录
结构:
父类中有:成员变量,构造方法,成员方法。
首先我们指出两个误区:
-
子类到底能继承父类中的什么?如下图:
-
- 可知,构造方法无论是否私有都无法被子类继承
- 成员变量总能被继承(但需要注意的是:被private修饰的成员变量,随可被继承,但无法直接调用,而需要利用Set和Get方法)
- 成员方法非私有时可被继承,反之不可被继承
-
-
构造方法的继承原理:
-
无法被继承,因为Java中要求构造方法的方法名要和类名一致,若被继承,构造方法名显然不与子类的类名一致,如下图。
-
成员变量的继承原理:
父类中的成员变量age是private修饰的,虽然说可以被继承
但是不可直接调用,需使用set和get调用
-
-
成员方法的继承
-
在说明成员方法的继承之前,先来介绍一下虚方法表:
虚方法表是从最顶层父类(Object)开始设立的,其中存储被非private,非static,非final修饰的方法,每创建一个子类就向后传递虚方法表,同时创建的子类中满足条件的成员方法也放入虚方法表。使得之后的子类在调用父类中的方法时可直接查找虚方法表,不用再去一个个父类中查找,大大提升性能。 虚方法表和方法重写之间的关联很大。
只有父类虚方法表中的方法才能被继承