继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 
答:父类: 
package test; 
public class FatherClass 

public FatherClass() 

System.out.println("FatherClass Create"); 


子类: 
package test; 
import test.FatherClass; 
public class ChildClass extends FatherClass 

public ChildClass() 

System.out.println("ChildClass Create"); 

public static void main(String[] args) 

FatherClass fc = new FatherClass(); 
ChildClass cc = new ChildClass(); 


输出结果: 
C:>java test.ChildClass 
FatherClass Create 
FatherClass Create 
ChildClass Create 
我不明白的是 : 为什么 ChildClass cc = new ChildClass();  创建一个子类对象的同时,父类对象也创建了 
FatherClass Create 
ChildClass Create

解决方案 »

  1.   

    ChildClass 继承的是 FatherClass,当创建一个ChildClass的时候,就会先调用FatherClass的构造函数,然后再调用 ChildClass 的构造函数没记错的话应该是这样的~呵呵。。
      

  2.   

    楼上正解,要理解初始化顺序不容易,一般自己用代码测试一下反而容易清楚,给你个。
    package com.matthew.initsequence;
    public class TheThirdOne {
    String instanceField = getInstanceField("TheThirdOne instance field");
    static String staticField = getstaticField("TheThirdOne static field");

    {
    System.out.println("TheThirdOne instance block");
    }
    static {
    System.out.println("TheThirdOne static block");
    } TheThirdOne() {
    System.out.println("TheThirdOne Constructor");
    }

    String getInstanceField(String instanceField){
    System.out.println(instanceField);
    return instanceField;
    }

    static String getstaticField(String staticField){
    System.out.println(staticField);
    return staticField;
    } protected void finalize() {
    System.out.println("TheThirdOne.destructor");
    }

    public static void main(String[] args) {
    System.out.println("");
    new Child();
    System.gc();
    }
    }class Parent {
    String instanceField = getInstanceField("Parent instance field");
    static String staticField = getstaticField("Parent static field");

    {
    System.out.println("Parent instance block");
    }
    static {
    System.out.println("Parent static block");
    } Parent() {
    System.out.println("Parent Constructor");
    }

    String getInstanceField(String instanceField){
    System.out.println(instanceField);
    return instanceField;
    }

    static String getstaticField(String staticField){
    System.out.println(staticField);
    return staticField;
    } protected void finalize() {
    System.out.println("Parent.destructor");
    }
    }class Child extends Parent {
    String instanceField = getInstanceField("Child instance field");
    static String staticField = getstaticField("Child static field");

    {
    System.out.println("Child instance block");
    }
    static {
    System.out.println("Child static block");
    } Child() {
    //super();
    System.out.println("Child Constructor");
    }

    String getInstanceField(String instanceField){
    System.out.println(instanceField);
    return instanceField;
    }

    static String getstaticField(String staticField){
    System.out.println(staticField);
    return staticField;
    }


    protected void finalize() {
    System.out.println("Child.destructor");
    super.finalize();
    }

    }
      

  3.   

    搂主去仔细看下java教程的 继承 这一章吧,还算简单的,要是在c++中,多了个拷贝构造函数,析构函数估计你会更晕的~~
      

  4.   

    因为ChildClass继承了FatherClass ,当ChildClass实例化时,必须先要去初始化父类构造函数,在初始化其自身的构造函数
      

  5.   

    继承了就是
    如果你重写的object的构造,给她加个打印语句
    它也会构造一个object的