多型的好處
c++中多型(理論結合實踐的理解)
1、多型:同乙個物件,在不同時刻體現出來的不同狀態。
2、多型的前提:
1)要有繼承關係或實現關係(介面);
2)要有方法重寫;
3)要有父類或者父介面引用指向子類`fu f= new zi();
注意:形參實參形式的(形參父類實參子類)。
3、多型的分類:
1)具體類多型
class
fuclass
ziextends
fufu f=
newzi()
//父類引用指向子類
2)抽象類多型(常用)
abstract
class
fuclass
ziextends
fufu f=
newzi()
;//抽象父類引用指向子類
3)介面多型(常用)
inte***ce
fuclass
ziimplements
fufu f=
newzi()
;//父介面引用指向子類
如,fu f=
newzi()
;//左父類右子類
重點:成員方法,執行時,結果為子類重寫的成員方法的結果。
提高了**的維護性(繼承保證);提高了**的擴充套件性。
原**,不易擴充套件:
(借用本**,也進一步理解一下工具類)
//父類:動物類
class
animal
public
void
sleep()
}//貓類
class
catextends
animal
//方法重寫
public
void
sleep()
}//狗類
class
dogextends
animal
public
void
sleep()
}//新增豬類
class
pigextends
animal
public
void
sleep()
}//針對動物操作的工具類
class
animaltool
//最好把工具類的構造方法私有,防止別人建立該類的物件。該類是工具類。
//呼叫貓的功能
public
static
void
feedcat
(cat c)
//呼叫狗的功能
public
static
void
feeddog
(dog d)
//新增豬的,呼叫豬的功能
public
static
void
feeddog
(dog d)
}/*測試類
測試類裡面不放其他東西(如,定義其他方法)!只能是建物件,調方法。
所以新定義了個操作動物的工具類去放feedcat(),feeddog()方法。
*/class
duotaitest
}
改進後:
採用多型後,易於擴充套件。
重點在:**用fu f做形參接收引數,用zi z的z做實參。有了父類引用指向子類。**即動物類引用指向各具體的動物類。同時又有方法重寫,執行的時候肯定是個各子類重寫的方法在起作用。從而利用多型實現好的擴充套件性。
/*
多型的擴充套件性
*//*
程式輸出結果:
狗吃肉狗坐著睡
狗吃肉狗坐著睡
狗吃肉狗坐著睡
---------------
貓吃魚貓趴著睡
貓吃魚貓趴著睡
貓吃魚貓趴著睡
---------------
豬吃白菜
豬躺著睡
*///父類:動物類
class
animal
public
void
sleep()
}//貓類
class
catextends
animal
public
void
sleep()
}//狗類
class
dogextends
animal
public
void
sleep()
}//新增豬類
class
pigextends
animal
public
void
sleep()
}//針對動物操作的工具類
class
animaltool
//最好把工具類的構造方法私有,防止別人建立該類的物件。該類是工具類。
/*-------------改動-----------------------*/
//注意:形參是animal a,用動物接收。 到時候左邊是 fu f, 右邊是zi z, fu f= zi z
public
static
void
feedanimal
(animal a)
}/*測試類
測試類裡面不放其他東西(如,定義其他方法)!只能是建物件,調方法。
所以新定義了個操作動物的工具類去放feedcat(),feeddog()方法。
*/class
duotaitest2
}
如果你用的是c++的話,歡迎看我這篇非常用心的blogc++中多型由淺入深的理解:寫得非常通俗易懂,原理上也寫得非常清晰了。如果面試被問到的話,看了它肯定被問不倒啦。
the end.
架構 擴充套件性
擴充套件選和伸縮性 擴充套件性 指對現有系統影響最小的情況下,系統功能可持續擴充套件或提公升的能力。表現在系統基礎設施穩定不需要經常變更,應用之間較少依賴和耦合,對需求變更可以敏捷響應。它是系統架構設計層面的開閉原則 對擴充套件開放,對修改關閉 架構設計考慮未來功能擴充套件,當系統增加新功能時,不需...
CSS可擴充套件性
今日在寫pc官網的時候,一直對於html css的結構編寫完全按照自己的思維方式,今天把 交給老大的時候,被他指出很多編寫 的錯誤性,比如 結構,標籤的使用,語義化,css的可擴充套件性,由於 主要還是需要做seo優化,所以在標籤使用上也有些不合理之處,給了我一些建議,自己記錄以下 1 在html標...
NoSql的易擴充套件性
nosql現在很火很時髦,大家言必稱nosql,彷彿關係型資料庫已成陳舊落後的代名詞。但依我看,真正理解nosql的還不多,在實際專案中用過的應該就更少了。我也還不理解,更沒怎麼應用過,所以現在要努力學習。在學習過程中,常看到有吹噓nosql相比較關係型資料庫而言,有乙個優點是 易擴充套件。這怎麼理...