package com.zhang.test;

class Parent
{
  private static int j=method();
  private int i=test();
  
  static
  {
     System.out.println(1);
  }
  
  {
     System.out.println(2);
  }
  
  Parent()
  {
     System.out.println(3);
  }

  //执行此方法时,因为子类也有,发生了方法重写。所以执行子类的test()方法
  public int test(){
      System.out.println(4);
      return 1;
  }

  public static  int method(){
      System.out.println(5);
      return 1;
  }

}

class Child extends Parent
{
    private static int j=method();
    private int i=test();
      
    static
    {
         System.out.println(6);
    }
      
    {
         System.out.println(7);
    }
      
    Child()
    {
         System.out.println(8);
    }
    public int test(){
        System.out.println(9);
        return 1;
    }

    public static  int method(){
        System.out.println(10);
        return 1;
    }
 
}

/**
 * 只执行一次
 * 初始化父类 静态属性、静态方法、静态代码块按顺序执行
 * 初始化子类 静态属性、静态方法、静态代码块按顺序执行
 *
 * 每new一次执行一次
 * 实例化父类 非静态属性、非静态方法、非静态代码块按顺序执行,执行参构造方法
 * 实例化子类 非静态属性、非静态方法、非静态代码块按顺序执行,执行参构造方法
 */
public class Test
{
   public static void main(String[] args)
   {
       new Child();
       new Parent();
       new Child();
   }
}

 

posted on 2019-03-29 09:20  zhangjinru123  阅读(336)  评论(0编辑  收藏  举报