【问题标题】:Java Inheritance : Error when @Override methodJava继承:@Override方法时出错
【发布时间】:2012-04-08 05:24:58
【问题描述】:

我有两个例子。第一个是正确的,第二个是错误的。只是有一点不同: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
    }
}

谢谢:)

@:我已经编辑了 .我打错字了。

【问题讨论】:

  • 你在问为什么它给你一个错误?
  • 它对我有用,没有错误......你得到了什么错误?
  • 您的两个示例都编译并运行(并打印“我是老虎”)对我来说很好。你有什么问题?
  • 错误是什么?不编译?如果是这样,编译器会说明什么错误?运行,但给出了意想不到的结果?如果是这样,您期望什么以及会发生什么?
  • 你确定吗?我运行了这两个案例并得到“我是一只老虎”作为输出。

标签: java oop inheritance


【解决方案1】:

我测试了你的 2 个类,它们都在工作。 如果您尝试以下操作,我将无法工作: 动物老虎 = new Tiger(); 在第二种情况下,因为 Animal 没有 Scream() 方法

顺便说一句:通常,方法名称以小写开头;-)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-05-01
      • 2016-09-01
      • 1970-01-01
      • 2013-06-05
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-21
      相关资源
      最近更新 更多