一.编写父类对象:

public class Father {
	public Father() {
		// TODO Auto-generated constructor stub
		System.out.println("我是Father的构造方法");
	}
	{
	   System.out.println("我是Father的代码快");	
	}
	static
	{
		 System.out.println("我是Father的static代码快");	
		}
}

二.编写子类对象:

public class Son extends Father {
    public Son() {
        // TODO Auto-generated constructor stub
        System.out.println("我是Son的构造方法");
    }
    {
       System.out.println("我是Son的代码快");    
    }
    static
    {
         System.out.println("我是Son的static代码快");    
        }
}

三.编写测试类:

public class Test {
    public static void main(String[] args) {
        Son son=new Son();
    }
}

四.实验结果:

(一道面试题)生成实例时代码的执行顺序

五.总结:

出现了6句话,这6句话也代表了调用过程.

1).最先开始调用static的方法.父类static块---->子类static块

2).执行父类方法

  代码块的执行顺序优于构造方法.先调用执行代码块代码-->再执行父类构造方法的代码

3).执行子类方法

   代码块的执行顺序优于构造方法.先调用执行代码块代码-->再执行子类构造方法的代码

 

 结论:父类静态代码块--->子类静态代码块--->父类代码块--->父类构造方法代码--->子类代码块--->子类构造方法代码

相关文章:

  • 2021-05-18
  • 2021-07-31
  • 2021-12-03
  • 2022-12-23
  • 2021-10-07
  • 2021-09-08
  • 2022-01-25
猜你喜欢
  • 2022-12-23
  • 2021-12-17
  • 2021-07-07
  • 2021-10-16
  • 2022-01-07
  • 2021-09-06
相关资源
相似解决方案