有个Animal类,一个Fish类,Fish类继承于Animal类
当对Fish类进行实例化时,是否会运行Animal的构造函数。

解决方案 »

  1.   

    也就是说只要对子类进行实例化,默会都会去执行父类的构造函数吧?
    如果 ColorFish类 继续于 Fish类,Fish类继承于 Animal类
    对olorFish进行实例化时,各个类的构造函数的执行顺序是怎样的?
    是 Animal--> Fish--> ColorFish 的顺序执行构造函数么?
     
      

  2.   

    补充一句如果你的Animal类中编写了带参的构造函数,而在Fish类中的构造函数又没有显示调用父类的带参构造函数则编译器会自动为你调用Animal的无参构造此时就会出现运行异常,因为编译器找不到Animal的无参构造函数因此你必须选择
    1. 在Animal中声明无参构造(这也是编写顶级父类的好习惯)2. 在子类构造函数中显示调用父类中存在的构造函数个人比较喜欢第一种
      

  3.   

    子类在继承父类的东西的时候,继承所有的,但是不继承构造方法,需要重写构造方法
    最好将父类的构造方法重写吧,比如父类是animal 它只有叫声,那你的fish还会游泳啊,对吧!
      

  4.   

    注意:不管是重写无参或者有参的,最好使用SUPER来指明使用的父类哪种的构造方法。
      

  5.   

    对象的初始化
       a.在创建对象时,对象所在类的所有数据成员会首先进行初始化
       b.继承时的初始化:
         经验证:超类静态数据—》子类静态数据—》超类的非静态数据—》超类的构造方法—》子类的非静态—》子类的构造方法好久以前读的一本叫《java百事通》时整理的
      

  6.   

    abstract class A {
    public A() {
    this.print();
    } public abstract void print();
    }class B extends A {
    private int x = 100; public B(int x) {
    this.x = x;
    } public void print() {
    System.out.println("x = " + x);
    }
    }public class InstanceDemo {
    public static void main(String args[]) {
    A a = new B(10);
    }}
    看看这个程序的结果就知道了!!!!!!!!!!!!!!
      

  7.   

    自己写个例子就能知道答案的。不止是构造函数,还有里边的静态代码块,只要自己写一下System.out马上就能知道答案。要提高编程的水平,自己动手才是王道。