class superClass{
int Y;
superClass(){

Y=30;
System.out.println("in superClass:Y="+Y);
}
void doPrint()
{
System.out.println("In subClass.doPrint()");

}
}
class subClass extends superClass{
int Y;
subClass(){
super();
Y=50;
System.out.println("in subClass:Y="+Y);

}
void doPrint(){
super.doPrint();
System.out.println("in subClass.doPrint()");
System.out.println("super.Y="+super.Y+"sub.Y="+Y);

}
}
public class Q{
public static void main(String [] args){
subClass subSC=new subClass();
subSC.doPrint();
}
}
这段代码的执行顺序是怎么执行的,为什么不是先输出“In subClass.doPrint()”
而是先输出“in superClass:Y="30”呢
刚开始学java弄不明白

解决方案 »

  1.   

    构造器,会先掉用父类的构造器,一直到超类Object所以代码也是父类的先执行。
      

  2.   

    父类的构造器比子类的先执行,在子类new时(subClass()) 先调用了superClass() 即使你不写super()系统也会自动的给你加上的 :如果你把
    class subClass extends superClass{ 
    int Y; 
    subClass(){ 
    super(); 
    Y=50; 
    System.out.println("in subClass:Y="+Y); } 
    中的super();去掉 结果也是一样的