子类对象的实例化过程

    技术2022-05-11  91

    源代码: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:执行方法体中的程序代码。 


    最新回复(0)