隐藏的super()(续)

我们再来看看下面这个例子。
ShadowTest.java
 1public class ShadowTest
 2{
 3    public static void main(String [] args)
 4    {
 5        A a = new A();
 6        B b = new B();
 7        System.out.println("a.i= "+a.i);
 8        System.out.println("b.i= "+b.i);
 9    }

10}
A.java
1class A
2{
3    int i = 10;
4    
5    public A()
6    {
7        System.out.println(i);
8    }

9}
B.java
1class B extends A
2{
3    int i = 5;
4    
5    public B()
6    {
7        System.out.println(i);
8    }

9}


为什么会出现两个10的结果?就是因为B类继承了A类,在B类的构造函数B(){}中隐藏了super();的原因。那么它会调用父类A的构造函数。

参考:《Java2全方位学习》第137-138页

posted on 2007-03-05 00:20  豆豆の爸爸  阅读(270)  评论(0编辑  收藏  举报