您的位置:首页 > 编程语言 > Java开发

java 继承 及 初始化顺序

2014-06-25 17:07 309 查看
class Activity {

    public Activity() {

        TestInherit t = (TestInherit)this;

        t.setI();

    }

}

class BaseActivity extends Activity {

    public BaseActivity() {

        super();

        System.out.println(this);

    }

    

    public String toString() {

        return "BaseActivity " + this.hashCode();

    }

}

public class TestInherit extends BaseActivity {

    public static int i = 3;

    

    public TestInherit() {

        super();

        System.out.println(this);

    }

    

    public String toString() {

        return "TestInherit " + this.hashCode();

    }

    

    public void setI() {

        this.i = 100;

    }

    

    public static void main(String[] args) {

        TestInherit t = new TestInherit();

        System.out.println(t.i);

    }

}

运行结果:

TestInherit 484984675

TestInherit 484984675

100

将变量 i 的static去掉

运行结果:

TestInherit 1436992360

TestInherit 1436992360

3

结论:在继承链中的所有类的 this 均代表一个对象,就是在main中要 new 的对象。变量 i 有 static 修饰时,在类的构造过程中,先初始化静态变量,

然后再开始整个构造过程,所以在Activity类中对静态变量的改变是可以保存下来的。 当变量 i 没有static 修饰时,先开始构造过程,之后再进行 i 的

初始化,所以在Activity类中对 i 的改变被覆盖了。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 继承