java类的生命周期和this关键字一些理解.......欢迎勘误...........
稍稍研究了一下java类的生命周期...发出来分享一下........欢迎大家吐槽.......
我所猜测的java类底层的初使化顺序--在一个语言的底层是没有语法这个概念的,只有执行顺序
java类-->静态属性-->静态方法-->隐式类实例(this)-->实例属性-->实例方法-->构造方法
a 这就能解释为什么能在实例方法中调用静态方法,因为此时静态方法已经初使化
b 同样能解释为什么不能在静态方法中通过this来调用实例方法,因为在静态方法中调用this时,this和实例方法还未初使化;
c 这同样能够解释为什么在构造方法里面能调用任意的类成员方法,,,因为当调用构造方法时,类的其它成员已经全完初使化完成了..
d 构造方法中可以调用任意的类成员,反过来则不成立 .构造方法不能直接调用,只能配合new来创建类实例
附上俺的测试代码:
public class TestClass { private int a = 1; private static int b = 1; public TestClass() //构造方法中可以调用任意的类成员 { this.fun(); this.sFun(); //静态方法属于全体类实例 TestClass.sFun(); System.out.print(this.a); System.out.print(this.b); //静态属性属于全体类实例 System.out.print(TestClass.b); new TestClass(); } private void fun() { new TestClass().sFun(); this.sFun(); new TestClass(); // this.TestClass(); //报错,不能直接调用构造方法 } private static void sFun() { //this.fun(); //静态方法中不能使用this来调用实例方法,只能通过构造方法创建实例来调用 //TestClass.TestClass(); //报错,不能直接调用构造方法 new TestClass().fun(); } public static void main(String[] args) { } }