我也知道子类不能继承父类的构造方法,但是大家看看下面这短代码,怎么可以有父类构造方法里的输出呢?class SuperClass {
int x; SuperClass() {
System.out.println("in SuperClass : x=" + x);
}
}class Sub extends SuperClass {
int x;
}public class Test {
public static void main(String args[]) {
Sub subC = new Sub(); }
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【cupid_love】截止到2008-07-29 16:37:31的历史汇总数据(不包括此帖):
    发帖的总数量:4                        发帖的总分数:20                       每贴平均分数:5                        
    回帖的总数量:13                       得分贴总数量:1                        回帖的得分率:7%                       
    结贴的总数量:2                        结贴的总分数:20                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:2                        未结的总分数:0                        
    结贴的百分比:50.00 %               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主加油
      

  2.   

    在子类的构造方法中是这样的:
    public Sub() {
     super(); //会首先执行父类的构造。所以就打印了父类构造里的语句。
    }
    默认的可以不写。
      

  3.   

    谢谢二楼,豁然开朗。如果子类中的构造方法没有调用super关键字调用父类的某个构造方法,那么默认就有super();
      

  4.   


    package com.zhangkai;
    class Par {
    /**
     * 父类构造方法
     */
    public Par() {
    System.out.println("父类----constructor");
    }
    /**
     * 静态代码块
     */
    static {

    System.out.println("父类----static");
    }
    /*
     * 父类普通代码块
     */
    {
    System.out.println("父类普通代码块");
    }
    }
    public class Sub extends Par {
    public Sub() {//默认子类构造函数
    super();//可以不写,如果父类构造函数带参数,那就必须写上,如:super(5);
    System.out.println("子类------constructor");
    }
    /**
     * 子类静态代码块
     */
    static {

    System.out.println("子类---static");
    }
    /*
     * 子类普通代码块
     */
    {
    System.out.println("子类---普通代码块");
    }
    public static void main(String[] args) {
    Sub sub = new Sub();
    }
    }
    打印结果:
    父类----static
    子类---static
    父类普通代码块
    父类----constructor
    子类---普通代码块
    子类------constructor
    /*顺序。
    父类静态代码块
    子类静态代码块
    父类普通代码块
    父类构造
    子类普通代码块
    子类构造*/
    严格按照执行顺序,就不会出错了虽没分,复习下。
      

  5.   

    顶楼上  Thingking in Java...里好像有一节专门将这个的...
      

  6.   

    在构造子类的时候是这样的: 
    public Sub() { 
    super(); //会首先执行父类的构造。

    这是默认的,类似的还有这种情况,在构造子类的时候系统会这样,先在该构造方法里有没有this(),然后在找有没有super(),若是没有就自动加上super().