JavaSE:子类对象实例化执行顺序

237 阅读1分钟

001.代码

//父类
public class Parent {
    private String name = "huahua";
    
    private static int age1 = 17;
    public static int age2 = 18;
    
    public Parent(){
    	System.out.println("我是父类的无参构造方法");
    }
    
    static{
    	System.out.println("我是父类的静态代码块");
    }
    
    {
    	System.out.println("我是父类的构造代码块");
    }
    
    public void eat(){
    	{
    		System.out.println("我是父类内eat方法体普通代码块");
    	}
    }		
}


//子类
public class Son extends Parent{
	
    public static int age3 = 19;
    {
    	System.out.println("我是子类的构造代码块");
    }
    
    public Son(){
    	System.out.println("我是子类的无参构造方法");
    }
    
    static{
    	System.out.println("我是子类的静态代码块");
    }
    
    public void eat(){
    	System.out.println("我是子类内eat方法");
    }
    
    public static void setName(){
    	System.out.println("我是子类的静态方法");
    }
}

//测试类
public class TestDemo {
	public static void main(String[] args) {
		Son son = new Son();
		System.out.println(son.age3);
	}
}

输出:
我是父类的静态代码块
我是子类的静态代码块
我是父类的构造代码块
我是父类的无参构造方法
我是子类的构造代码块
我是子类的无参构造方法
19

002.总结