2012-03-23 60 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

兩個版本都運行完美。 在這兩種情況下,它說「老虎」