源代码:class Person{ public String name="noname"; public int age=-1; public Person() { System.out.println("父类的默认构造方法!"); } public Person(String name,int age) { this.name=name; this.age=age; System.out.println("父类的两参构造方法!"); }}class Student extends Person{ public String school="noname"; public Student() { super(); System.out.println("子类的默认构造方法!"); } public Student(String name,int age) { super(name,age); System.out.println("子类的两参构造方法!"); } public Student(String name,int age,String school) { this(name,age); System.out.println(this.school); this.school=school; System.out.println("子类的三参构造方法!"); }}class CreateStudent{ public static void main(String[] args) { Student ssj=new Student("sunshangjun",23,"大连交通大学"); }}
输出结果:
父类的两参构造方法子类的两参构造方法noname子类的三参构造方法原理:1:分配成员变量的存储空间并进行默认的初始化,既为父类成员变量name,age和子类的school分配空间并分别赋值null,0,null2:调用子类的public Student(String name,int age,String school)构造方法,该方法中首先执行this(name,age),既调用public Student(String name,int age)构造方法,该方法中又显示的调用父类中的public Person(String name,int age)构造方法。 所以构造的顺序为:(1)父类的public Person(String name,int age)->子类的public Student(String name,int age)->子类的public Student(String name,int age,String school).3:进行实例变量的显示初始化工作。既为父类成员变量name,age和子类的school分配空间并分别赋值noname,-1,noname。4:执行方法体中的程序代码。