物件導向-多型
物件導向-多型
當你的類別有繼承關係,不管是類別或是介面
這些型態就是所謂的多種形態
但這些型態有時候需要一些轉換
思考一下什麼時候會需要轉換
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){
''''
}