父类:
public class FatherCalss { public FatherCalss(){
System.out.println("FatherCalss Create");
}
}
子类:继承了父类public class ChildClass extends FatherCalss { public ChildClass(){
System.out.println("ChildClass Create");
}
}
答案是:
FatherCalss Create
FatherCalss Create
ChildClass Create问题:为什么父类的FatherCalss Create打印出了两次

解决方案 »

  1.   

    public class Mainmain {
    public static void main(String[] args) {
    FatherCalss fc=new FatherCalss();
    ChildClass cc=new ChildClass();
    }
    }
      

  2.   

    你new FathCslss时打印一次,newChildClass时实现父类的方法,在实现子类的,所以由2次
      

  3.   

    大哥,你的“FatherCalss fc=new FatherCalss();
    ”已经打印了“FatherCalss Create
    ”,
    还有的是你创建子类对象的时候,默认先调用父类的构造器,(如果你没有显示设置有参数的构造函数)
      

  4.   

    你好,楼主,你可以这样测试:
    class FatherCalss { public FatherCalss() {
    System.out.println("先调用父类的构造方法");
    System.out.println("FatherCalss Create");
    }
    }class ChildClass  extends FatherCalss{ public ChildClass() {
    System.out.println("再调用子类的构造方法");
    System.out.println("ChildClass Create");
    }
    }public class Hello {
    public static void main(String[] args) {
    FatherCalss fc = new FatherCalss();
    ChildClass cc = new ChildClass();
    }
    }运行结果:先调用父类的构造方法
    FatherCalss Create
    先调用父类的构造方法
    FatherCalss Create
    再调用子类的构造方法
    ChildClass Create有运行结果可以看出,调用了两次父类的构造方法,说明在new父类对象的时候调用了一次父类的构造方法,在new子类对象的时候,先调用了父类的构造方法,再调用自身的构造方法!
      

  5.   

    建议 继承这一块 楼主该多加复习。 当执行 FatherCalss fc=new FatherCalss();的时候 会先打印一行(FatherCalss Create)   再当你执行 ChildClass cc=new ChildClass();的时候 
    因为ChildClass 是FatherClass 的子类, 子类在调用构造方法的时候,会先去调用父类的无参数的构造方法,这个时候就会再打印一行FatherCalss Create  最后实例化自己的对象时,打印ChildClass Create
      

  6.   

    为什么  都是public class好像是直接class吧 
      

  7.   

    看到你的main方法,
    1.首先调用父类的构造方法,打印出东西,无可厚非;
    2.其次调用子类的构造方法,子类构造方法中,首先默认要做的事为: super(),即调用父类的无参构造方法,然后再打印出你子类的内容。
    package extend;public class ChildClass extends FatherClass{

    ChildClass(){
    System.out.println("子类无参构造方法");
    }
    ChildClass(int i){
    System.out.println("子类有参构造方法,参数i:"+this.i);
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
    new ChildClass();
    new ChildClass(1);
    }}class FatherClass{
    int i;
    FatherClass(){
    System.out.println("父类无参构造");
    }
    FatherClass(int i){
    System.out.println("父类有参构造方法,参数i:"+i);
    }
    }
      

  8.   

    你new FathCslss时打印一次,newChildClass时实现父类的方法,在实现子类的,所以由2次
      

  9.   

    子类继承父类的时候,new的时候,先调用父类的无参的构造方法,然后执行继承了的父类的无耻的构造方法!再执行子类的,所以如果你new的话,这个FatherCalss Create则会执行两次   楼主,你再去试试静态代码块和无参的构造方法,看谁先执行吧!这个自己试了才会记得,面试题经常有。
      

  10.   


    这个《Thinking in Java》里有解说的,JAVA的构造是上溯构造当你new Child()的时候,是先调用父类的构造,再调用子类的构造
      

  11.   

    因为创建对象new的时候默认会把构造函数走一边;继承关系表示儿子有的东西他有,父亲有的东西儿子也拥有,所以new的时候就把两个构造函数走了一遍了;
      

  12.   

    new创建对象子类的时,new调用默认的构造方法(),而在调用构造方法时,因为子类是继承父类的,因此会先调用父类的默认的构造方法,然后在调用子类的默认构造方法(),这样就先回打印出一个父类的输出,在打印出一个子类的输出,父类执行时,也会打印出父类的又一个输出
      

  13.   

    你new FathCslss时打印一次,newChildClass时实现父类的方法,在实现子类的,所以由2次
      

  14.   

    ChildClass cc=new ChildClass(); 会调用父类的无参构造方法
      

  15.   

    new父类时一次,子类继承了父类,故new子类时还有一次