5.1小节讲解了类的继承机制。通过学习5.1小节的内容可知:子类能够继承父类的属性和方法,在此基础上,子类常常会扩展出属于自身特有的属性和方法,因此子类对象中的属性和方法可以分为两部分:从父类中继承而来的部分和自身所定义的部分。图5-3展示了Person和Student父子两个类对象的基本结构。
图5-3 Person类对象与Student类对象
图5-3中,左边的是Person类的对象,右边是Student类对象。Student类对象被分为两部分,其中底色较深的部分表示从父类继承而来的属性,而底色较浅的部分表示自身所定义的属性。通过观察不难看出:Student类对象中底色较深的部分其实就是一个Person类的对象,因此,对于一个子类对象而言,父类对象是它的组成部分。从另一个角度来说:子类对象中包含了一个父类对象。既然子类对象中包含了一个父类对象,那么在创建一个子类对象时,是先创建哪一部分呢?
在Java语言中,虚拟机总是按照“先父后子”的顺序完成子类对象的创建。也就是说,当创建一个子类对象时,虚拟机总是会先创建子类对象中的那个父类对象,然后在父类对象的基础上再去增加属于子类自身的属性和方法,最终形成一个子类对象。为了验证这个结论,我们可以先在父类(Person)的无参数构造方法中添加一条输出语句&