[Java] Polymorphism 多型定義

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

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

舉個程式碼而言:

class Animal { 
 public int getLegs(){
 return legs;
 }
}
class Bird extends Animal{
public int getLegs() {
return legs*2;
}

public String getBirdCall() {
return birdCall;
}

public class MainProgram{
public static void main(String args[]){
Animal animal = new Bird();
animal.getLegs();
//animal.getBirdCall(); it's not ok
}
}

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

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

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments