to panq() 怎么可能会没有父类呢?总是默认extends Object的嘛哦,对了,Object应该没有父类

解决方案 »

  1.   

    这个问题有两个关键性的概念需要明确!
    default constructor 和no-parameter constructor 。
    从文中来看,这两个概念是不同的,我们可以做一下假定:
    default constructor是在没有声明构造方法是编译器为我们生成的那个构造方法,而no-parameter constructor是我们自己声明的没有参数的构造方法,在形式上二者是一样的,但是SUN是否区分这二者的区别还不清楚。在很大程度上,这二者是没有区分的,最明显的就体现在B的叙述上,个人认为这句话没有错误,当然C也没有错误,E也是正确的。
      

  2.   

    The default constructor initializes the instance variables declared in the class我对C有疑问,这个instance variables declared in the class究竟是指
    class X
    {
      Object o;//这个?
    }
    还是指
    X x=new X();//这个?
      

  3.   

    但是如果二者的概念没有区分的话:即自己定义的无参的构造方法也可以称为default constructor 的话,那么B就是错误的,它可以调用父类的其它构造方法(如果有的话),但是C和E的结论依然正确。因此这个题目很难确定什么是正确答案,除非找到那两个概念的明确而权威的定义。SCJP很大程度上考的就是概念!
      

  4.   

    还记得构造方法的构造顺序吗?
    class X
    {
      Object o=new Object();//这个?
    }
    编译后实际是:
    class X
    {
      Object o;
    public X() {
    o=new Object()
    }
    }
    它的初始化就是指这个。
      

  5.   

    所以说啊,要考SCJP,最好看英文原版的SL275.:)
      

  6.   

    to cherami:帮我看看  http://www.csdn.net/expert/topic/516/516609.shtm
      

  7.   

    正确答案是C、E!!!
    cherami(cherami)解释的很详细。有一点,我纠正一下
    即自己定义的无参的构造方法也可以称为default constructor 的话
    ————————这个不能称之为default constructor !!!default constructor 是JVM在编译时由系统自动提供的!!!
      

  8.   

    to pensincun(天高任彭翔):
    如果default constructor 是JVM在编译时由系统自动提供的,那么我对答案B的不正确持反对态度,能给一个它不正确的理由吗?