3 分鐘閱讀

物件導向-多型

當你的類別有繼承關係,不管是類別或是介面

這些型態就是所謂的多種形態

但這些型態有時候需要一些轉換

思考一下什麼時候會需要轉換

EX

今天我去一個Party,認識到好多人,想要加一下電話

於是準備了一個方法來接收大家的電話

第一位是美女小艾蘋果手機

void GetPhoneNumber(Apple phone){

}

第二位是帥哥小艾索尼手機

void GetPhoneNumber(Sony phone){

}

這是一場災難

把Phone作為這些手機的基礎類別,其他為子類別 然後把方法改為基礎類別,這就稱為向上轉型 也稱為多型

void GetPhoneNumber(Phone phone){

}

既然有向上就有向下

思考什麼時候會需要用到向下

例如你現在有收集到所有的手機,並且登記完電話了

然後要還給對方,並且告訴他他手機該有的型別是正常的

如果沒轉換回去將會失去原本該類別的欄位與方法

Phone[] phones = new Phone[]{.....};
for (int i = 0; i < kk.length; i++) {
  if(phones[i] instanceof Sony){
    GiveBack((Sony)phones[i]);
  }
}
void GiveBack(Sony h){
    ''''
}

標籤:

更新時間: