8.3 子类对象实例化流程

发布时间 2023-06-07 15:29:38作者: 盘思动

demo1

  • 实例化子类,子类的父类也会实例化,而且是比子类先实例化
class Person {
    public Person(){
        System.out.println("Person实例化类");
    }  
}

class Student extends Person {
    public Student(){
        super();// super()就是子类构造调用父类构造的语句,只能放在子类构造方法的首行;--写不写都一样;
        System.out.println("Student实例化了");
    }
}

public class HelloWorld {
    public static void main(String args[]){
        new Student();// 实例化子类,子类的父类也会实例化,而且是比子类先实例化
    }

}
  • 结果
Person实例化类
Student实例化了

demo2 super 如果父类没有无参构造,必须用super来调用有参构造

  • 无论你如何折腾,在实例化子类的时候,一定会先实例化父类对象
  • super,this都可以调用构造方法;super是由子类调用父类的构造方法;this是调用本类;2个都是放在构造方法的首行;而且2个不允许同时出现;
class Person {
    private String name;
    private int age;
    public Person(String name,int age){
        this.name = name;
        this.age = age;
        System.out.println("Person实例化类");
    }  
}

class Student extends Person {
    private String school;
    public Student(String name,int age,String school){
        super(name,age);// 父类无无参构造,必须明确调父类有参构造
        this.school = school;
        System.out.println("Student实例化咯");
    }
}

public class HelloWorld {
    public static void main(String args[]){
        new Student("李牛逼",29,"山东大学");
    }
}
// super,this都可以调用构造方法;super是由子类调用父类的构造方法;this是调用本类;
// 2个都是放在构造方法的首行;而且2个不允许同时出现;