Java继承:@Override方法时出错

时间:2012-03-23 16:21:27

标签: java oop inheritance

我有两个例子。第一是真的,第二是错的。它在某一点上是不同的:Animal类和Mammal类。

public class Inheritance {

    public static class Animal {        
        public void Scream() {
            System.out.println("I'm an animal");
        }       
    }

    public  static class Mammal extends Animal{
                   //no Scream method
    }

    public  static class Tiger extends Mammal{
        public void Scream(){
            System.out.println("I'm a tiger");
        }       
    }

    public static void main (String[] args){

        Animal tiger = new Tiger();
        tiger.Scream(); //True
    }
}

第二个例子:

public class Inheritance {

    public static class Animal {        
                 // no Scream method
    }

    public  static class Mammal extends Animal{
        public void Scream(){
            System.out.println("I'm a mammal");
        }       
    }

    public  static class Tiger extends Mammal{
        public void Scream(){
            System.out.println("I'm a tiger");
        }       
    }

    public static void main (String[] args){

        Animal tiger = new Tiger();
        tiger.Scream(); //false. Error
    }
}

谢谢:)

@:我已经编辑了。我输入了不匹配的内容。

2 个答案:

答案 0 :(得分:4)

我测试了你的2个课程,他们都在工作。 如果你尝试这样的话,我就不会工作: 动物虎=新虎(); 在第二种情况下,因为Animal没有Scream()方法

BTW:通常,方法名称以小写字母开头; - )

答案 1 :(得分:0)

两个版本都运行完美。 在这两种情况下,它都说“老虎”