这个Java程序的运行结果是什么?

class Animal{
public Ainmal(){
System.out.println("我是动物");
}
}
class Cat extends Animal{ 还需要一个void
public cat(){
System.out.println("我是猫");
}
}
class PersiaCat extends Cat{
public PersiaCat(){
System.out.println("我是波斯猫");
}
}
public class Test{
public static void main(String[] args){
Animal animal = new PersiaCat();
}
}
请务必解释下为什么是这个运行结果!

class Animal{
    public Animal(){
        System.out.println("我是动物");
    }
}
class Cat extends Animal{  
    public Cat(){
        System.out.println("我是猫");
    }
}
class PersiaCat extends Cat{
    public PersiaCat(){
        System.out.println("我是波斯猫");
    }
}
public class Test{
    public static void main(String[] args){
        Animal animal = new PersiaCat();
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-11
class Animal {
    public Animal() {
        super();
        System.out.println("我是动物");
    }
}
class Cat extends Animal {
    Cat() {
        super();
        System.out.println("我是猫");
    }
}
class PersiaCat extends Cat {
    public PersiaCat() {
        super();
        System.out.println("我是波斯猫");
    }
}
public class Test {
    public static void main(String[] args) {
        Animal animal = new PersiaCat();
        // 构造方法不能继承,但是有个super
//        我是动物
//        我是猫
//        我是波斯猫
    }
}


原因:

虽然,构造方法不能继承,但是有个super(),在构造方法中的第一行隐含执行。

所以我们可以首先补全,加上super(),变成上面的代码。

故而结果:

我是动物
我是猫
我是波斯猫

本回答被提问者采纳
第2个回答  2013-10-11
我是动物
我是猫
我是波斯猫

父类 a = new 子类();
执行顺序从父类开始
第3个回答  2013-10-11
你是动物

你是猫
你是波斯猫追问

为什么

第4个回答  2013-10-11
我是波斯猫
相似回答