2012-03-23 72 views
-5

我有两个例子。首先是真实的,其次是错误的。它只是在一个点上有所不同:Animal类和Mammal类。Java继承:错误@Override方法

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 
    } 
} 

谢谢:)

@:我已编辑。我输入了不匹配。

+0

你问你为什么给你一个错误? – Stripies 2012-03-23 16:24:24

+1

它适用于我,没有错误...你得到的错误是什么? – 2012-03-23 16:27:50

+0

你的两个例子都编译并运行(并打印出“我是老虎”)对我来说很好。你有什么问题? – 2012-03-23 16:28:13

回答

4

我测试了你的2个班,他们都工作。 我不会工作,如果你尝试类似的东西: Animal tiger = new Tiger(); 在第二种情况下,因为动物没有尖叫()方法

BTW:通常情况下,方法名以小写;-)

0

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