[Java] Polymorphism 多型定義

Polymorphism 又稱為多型,他的討論要在類別間有繼承關係才有意義,而他的定義很少發現有人能一次說得很清楚,所以海芋就以幾句話來帶過他。簡單來說,多型是指子類別繼承父類別時,同時改寫父類別的函式或變數,而我們可以宣告一個屬於父類別的變數,去存取子類別中改寫自父類別的函式或變數,這我們稱之為多型 Polymorphism 。

舉個生活一點的例子,若有一個父類別是動物,那麼有一個子類別鳥繼承自動物這個類別,當我們看到鳥的時侯,可以說牠是一隻鳥,也可以說牠是一隻動物。同樣的東西,卻有不同的表示型態。

舉個程式碼而言:

  1. class Animal { 
  2.  public int getLegs(){
  3.  return legs;
  4.  }
  5. }
  6. class Bird extends Animal{
  7. public int getLegs() {
  8. return legs*2;
  9. }
  10.  
  11. public String getBirdCall() {
  12. return birdCall;
  13. }
  14.  
  15. public class MainProgram{
  16. public static void main(String args[]){
  17. Animal animal = new Bird();
  18. animal.getLegs();
  19. //animal.getBirdCall(); it's not ok
  20. }
  21. }

而在此例子中,animal是宣告給父類別,所以他只能認識父類別擁有的函式或變數,所以他能存取「getLegs()」這個函式。

而另一個要記的重點是,父類別若轉成子類別需要靠強迫轉型,子類別轉成父類別則是屬於自動轉型,而兄弟類別之類亦可以使用強迫的方式來轉型喔!