類別的進階認識

polymorphic (多型)

在程式設計的思維裡面,大學生、豬的宣告方式即稱為多型。須注意的是因為繼承了動物的子類,所以地球生物所有的基本方法大學生和豬類別都具有。但是地球生物不能確保都會有大學生和豬所擁有的方法,因此反推回來宣告就會在執行時期產生錯誤。以前面做的例子來實做,在下面程式中wolf、fox的宣告方式即稱為多型。須注意的是因為繼承Dog的子類,所以Dog所有的方法wolf和fox類別都具有。但是Dog不能確保擁有wolf和fox所擁有的方法,因此反過來宣告則會在執行時期產生錯誤。


public class CH01402 {
 
 public static void main(String[] args) {
   
  Dog fox=new Fox();
   
  fox.weight=7500f;
   
  fox.height=120.5f;
   
  fox.color="snow";
   
   
  Dog wolf = new Wolf();

 
 }
 
}


狗只是動物界的其中1員,不能因此而推論所有動物都是狗。
同樣好吃懶做的動物,得到下場卻大不同。



overloading (多載)

在Wolf和Fox類別裡分別有兩個eat()方法但參數不同,會在呼叫時依照給予的「參數的組合型態」決定使用哪一個sound方法 須注意的是「同型別」並且「不同參數」或「不同型別」並且「不同參數」才是多載。




overriding (覆寫)

Wolf 類別和Fox類別皆是繼承Dog的子類別,在其中各自改寫了eat()的方法,這樣的動作稱為覆寫。 須注意的「同型別」並且「同參數」才是覆寫,若「不同型別」卻「同參數」則會發生編譯錯誤。

沒有留言:

張貼留言