对于Java的初学者而言,很多时候我们只知道如何写一些基础的代码,但是却不知道为什么,对于一些概念而言,更是停留在一个很模糊的概念上,其实这样是不好的一种学习习惯。所以对于不太清楚的一些概念,自己多敲一敲,或许能更好的掌握。

总的顺序是:先父类后子类,先静态后动态,属性和代码块的初始化遵循正常的出场顺序无论是静态还是动态,但是他们总是先于构造器执行。但是还是需要通过题目的学习来加深我们的理解。

代码

package test;

public class ClassOrderTest {

static class A{

C c =new C();

public A(){

System.out.println("A's Constructor");

}

static {

System.out.println("A's static ");

}

}

static class B extends A{

public B(){

System.out.println("B's Constructor");

}

D d = new D();

C c =new C();

static {

System.out.println("B's static ");

}

}

static class C {

public C(){

System.out.println("C's Constructor");

}

static {

System.out.println("C's static");

}

}

static class D{

public D(){

System.out.println("D's Constructor");

}

static {

System.out.println("D's static");

}

}

public static void main(String args[]){

System.out.println("start");

B b = new B();

}

}

上面的代码中,因为几个类都要在Main方法中运行,因此就声明为static类型了,这个大家都知道的吧,不声明为static时,编译器会报错:No enclosing instance of type ClassName is accessible.

主要使用了四个静态内部类。代码比较简答,就不作过多的说明了。

“我们相信人人都可以成为一个IT大神,现在开始,选择一条阳光大道,助你入门,学习的路上不再迷茫。这里是北京尚学堂,初学者转行到IT行业的聚集地。"

查看原文 >>
相关文章