2013-03-02 114 views
0

在超作品在Java中所有的子類的方法overridding ....如果一個子類有自己獨立的方法,我怎樣才能使它發揮作用的...概念在Java

class Polymorphism3 { 

public static void main(String[] args) { 
      // note how these are all considered objects of type Animal by Java 
      Animal[] a = new Animal[4]; 
      a[0] = new Mouse(); 
      a[1] = new Bird(); 
      a[2] = new Horse(); 
      a[3] = new Animal();    
      for (int i=0;i<4;i++) { 
       a[i].pullTail();     
      }   

//...  


class Animal { 
    public void pullTail() { 
     System.out.println("I don't know what to say."); 
    } 
} 

class Mouse extends Animal { 
    public void pullTail() { 
     System.out.println("fart"); 
    } 
} 

class Bird extends Animal { 
    public void pullTail() { 
     System.out.println("tweet"); 
    } 

    public void fly() { 
     System.out.println("flap"); 
    } 
} 

class Horse extends Animal { 
    public void pullTail() { 
     System.out.println("neigh"); 
    } 
} 
+3

有什麼問題嗎?您正在覆蓋超類方法... – jlordo 2013-03-02 00:15:45

+1

'if(a [i] instanceOf Bird)((Bird)a [i])。fly();' – jdb 2013-03-02 00:17:42

+0

嘗試在您的一個子類中移除pullTail()方法;然後運行您的Polymorphism3.main()方法。這應該澄清你正在發生的事情。 – 2013-03-02 00:17:49

回答

1

你可以如果它沒有在動物中聲明,它就不會起作用。
的唯一方法是投給動物鳥如

((鳥)一[1])飛();

您也可以從Bird的putTail實現中調用它。

+0

非常感謝它,現在我得到它只有超級類聲明的方法可以工作...在子類 – user2125271 2013-03-02 00:24:24

+0

歡迎來到stackoverflow。不要忘記標記這個問題的答案。 – 2013-03-02 00:27:48

+1

謝謝...已經標記了答案 – user2125271 2013-03-02 00:39:53

1

如果這是關於不能夠實例化嵌套類:你需要的是封裝類的一個對象:

public class Polymorphism3 { 
    public static void main(String[] args) { 
     // note how these are all considered objects of type Animal by Java 
     Animal[] a = new Animal[4]; 
     Polymorphism3 poly = new Polymorphism3(); 
     a[0] = poly.new Mouse(); 
     a[1] = poly.new Bird(); 
     a[2] = poly.new Horse(); 
     a[3] = poly.new Animal(); 
     for (int i = 0; i < 4; i++) { 
      a[i].pullTail(); 
     } 
    } 

    class Animal { 
     public void pullTail() { 
      System.out.println("I don't know what to say."); 
     } 
    } 

    class Mouse extends Animal { 
     public void pullTail() { 
      System.out.println("fart"); 
     } 
    } 

    class Bird extends Animal { 
     public void pullTail() { 
      System.out.println("tweet"); 
     } 

     public void fly() { 
      System.out.println("flap"); 
     } 
    } 

    class Horse extends Animal { 
     public void pullTail() { 
      System.out.println("neigh"); 
     } 
    } 
}