读书人

思维有限,不知道该怎么解决,有那位大侠

发布时间: 2012-02-22 19:36:55 作者: rapoo

思维有限,不知道该如何解决,有那位大侠给解释一下,下面代码的运行结果为什么这么奇怪?
public class Parent
{
public void test(){

}

public Parent(int c){
System.out.println( "this hava attribue is run. ");
}

public Parent(){
test();
}
}

class Child extends Parent
{
public int instanceValue = 20;

public Child(int c){
}

public void test(){
System.out.println( "instance value is: " + instanceValue);
}

public static void main(String[] args){
new Child(1);
}
}

[解决办法]
我也刚学,说错了你们指出来.

运行时,父类的构造函数有先,父类里面调用了test()这个方法,因为子类重载他了,所以他不走父类的那个方法,直接走子类的.父类中没有这个instanceValue,所以运行时默认为0,
[解决办法]
this hava attribue is run
每次对子类实例化时候 ,现调用父类的构造函数 ,那么根据参数判断首先是有上面那个语句输出;
然后调用子类的构造函数,由于没有做任何事情 所以无输出

读书人网 >J2SE开发

热点推荐