SCJP中的一道小题不懂.
class   Super{       
             public   int   i=0;       
             public   Super(String   text){       
             i=1;       
             }       
             }       
             public   class   Sub   extends   Super{       
                   public   Sub(String   text){       
                      i=2;       
                   }       
             public   static   void   main(String   args[]){       
                Sub   sub=new   Sub( "Hello ");       
                System.out.println(sub.i);       
                }       
                }       
             what   is   the   result?                   
                A.   compile   will   fail       
                B.   compile   success   and   print    "0 "       
                C.   compile   success   and   print    "1 "       
                D.   compile   success   and   print    "2 "       
 选什么啊.谢谢.最好能解释下.
------解决方案--------------------干吗不运行一下
------解决方案--------------------父类没有默认构造方法,子类要显示调用
------解决方案--------------------如果想考SCJP建议你看JAVA2学习指南.我就是看的那个.
------解决方案--------------------在调用子类的构造函数时先调用父类的默认构造函数,
------解决方案--------------------假设A是B的父类,B是A的子类。   
 1、如果程序员没有给类A没有提供构造函数,则编译器会自动提供一个默认的无参数的构造函数,如果用户提供了自己的构造函数,则编译器就不在提供默认的无参数构造函数。   
 2、子类B实例化时会自动调用父类A的默认构造函数,所以如果A的默认的无参数的构造函数为private,则编译器会报错,而如果A没有提供默认的无参数的构造函数,而提供了其他类型的构造函数,编译器同样会报错,因为B找不到A的默认无参数构造函数。所以,我们最好给父类A提供一个无参数的构造函数。   
 3、或者在B的构造函数中显示的调用父类A的有参构造函数。super(parameter) 
------解决方案--------------------学习了,up
------解决方案--------------------在子类的构造方法中第一句应该是super(text);先显示的指定要调用的父类的构造方法。   
 结贴是个好习惯,谢谢。
------解决方案--------------------来晚了  帮顶一下!!!
------解决方案--------------------去了解下构造一个类时方法的调用顺序就明白了
------解决方案--------------------楼主想考SCJP,最基本的问题一定要懂啊   
 如果父类只有带参数的构造函数   
 那么子类的构造函数的第一行必须明确调用
------解决方案--------------------学习了
------解决方案--------------------编译错误。因为父类重写了一个构造方法,把原来的无参数的构造方法给覆盖了, 
 子类继承父类的构造方法默认是继承无参数的,现在父类没有,子类在实例话的时候,要先调用父类的构造方法 ,现在父类无参数的方法没有 所以 编译错误
------解决方案--------------------学习了