类与继承

2018-03-30  本文已影响0人  木栈桥上

当声明父类而用子类实例化时:

public class Main {

      public static int i=methodi();

      public int y=methody();

      public static int methodi() {

            System.out.println("i");

            return 1;

      }

      public int methody() {

            System.out.println("y");

            return 1;

      }

      public Main() {

            System.out.println("Main构造器");

      }

      {

            System.out.println("Main普通代码块");

      }

      static {

            System.out.println("Main静态代码块");

      }

      public static void main(String[] args) {

            Main m=new x();

      }

     

}

class x extends Main{

      public x() {

            System.out.println("x构造器");

      }

      {

            System.out.println("x普通代码块");

      }

      static {

            System.out.println("x静态代码块");

      }

}

输出为:

i

Main静态代码块

x静态代码块

y

Main普通代码块

Main构造器

x普通代码块

x构造器

当 Main m=new Main();  时。

输出为:

i

Main静态代码块

y

Main普通代码块

Main构造器

当 x x=new x();  时。

输出为:

i

Main静态代码块

xi

x静态代码块

y

Main普通代码块

Main构造器

x普通代码块

x构造器

总结:单个类执行顺序:静态变量的声明,静态代码块,普通变量声明,普通代码块,类构造器。

当声明父类而用子类实例化时执行顺序:

父类静态变量声明,父类静态代码块,子类静态变量声明,子类静态代码块,父类普通变量声明,父类普通代码块,父类构造器,子类普通变量声明,子类普通代码块,子类构造器。

上一篇 下一篇

猜你喜欢

热点阅读