创建派生类对象时,构造函数的执行顺序


父类的静态变量赋值---》父类的静态代码块---》子类的静态变量赋值--》子类的静态代码块--》父类的非静态变量赋值--》父类的非静态代码块--》父类的构造函数--》子类的非静态变量赋值--》子类的非静态代码块--》子类的构造函数。

public class Test5 {

    public static void main(String[] args) {
        Cat cat = new Cat();

    }

}
class Animal{
    public static String name="父类";
    public String sex = "雄性";
    static {
        System.out.println("我是父类的静态代码块,现在静态变量已被赋值为:"+name);
    }
    {
        System.out.println("我是父类的非静态代码块,现在非静态变量已经被赋值为:"+sex);
    }
    public Animal() {
        System.out.println("我是父类的构造函数");
    }
}
class Cat extends Animal{
    public static  String s_name = "子类";
    public String  age = "17岁";
    static {
        System.out.println("我是子类的静态代码块,现在我的静态变量已经被赋值为:"+s_name);
        
    }
    {
        System.out.println("我是子类的非静态代码块,现在我的非静态变量已被赋值为:"+age);
    }
    public Cat() {
        System.out.println("我是子类的的构造函数");
    }
}

运行结果;

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM