这几天重新看了《JAVA编程思想》的初始化和清理,对java对象方法的执行顺序有了一个新的认识。java对象执行顺序:static方法-->基类的构造函数->非static的对象-->构造函数-->对象手动调用的方法。下面以个例子来说明。
class A { A(){ System.out.println("A()");} }
class B extends A { B(){ System.out.println("B()");} }
class C extends A { C(){ System.out.println("C()");} }
class D {{ System.out.println("D()");}}
public class MyTest extends A {
MyTest(){ System.out.println("MyTest()");}
public static void staticMethord(){ System.out.println("staticMethord has do!");}
public void test(){System.out.println("test has do!");}
B b = new B();
C c = new C();
static D d = new D();
public static void main(String[] args) {
MyTest mytest = new MyTest();
mytest.test();
}
}
执行结果
D() //static对象
A() //mytest的基类构造函数
A() //B的基类构造函数
B() //B的构造函数
A() //C的基类构造函数
C() //C的构造函数
MyTest() //mytest的构造函数
test has do! //mytest调用的方法