1、 繼承的作用?好處?壞處?
繼承:通過繼承實現代碼復用。Java中所有的類都是通過直接或間接地繼程java.lang.Object類得到的。繼承而得到的類稱為子類,被繼承的類稱為父類。子類不能繼承父類中訪問權限為private的成員變量和方法。子類可以重寫父類的方法,及命名與父類同名的成員變量。但Java不支持多重繼承,即一個類從多個超類派生的能力。
優點:a因為大部分是繼承而來的,實現代碼重用,減少代碼書寫量;
b很容易修改和擴展已有的實現
缺點:a打破了封裝,因為基類向子類暴露了實現細節
b白盒重用,因為基類的內部細節通常對子類是可見的
c當父類的實現改變時可能要相應的對子類做出改變
d不能在運行時改變由父類繼承來的實現
2、 接口的好處?壞處?
優點:幫助Java語言實現一個類似於多繼承的功能.但是實現的多繼承功能不會使代碼中的類之間出現網狀關係,而是比較清楚的樹狀關係,類似於家譜的感覺。
缺點:如果向一個java接口加入一個新的方法時,所有實現這個接口的類都得編寫具體的實現。
3、 多態的作用?好處?壞處?
作用:簡單的說就是一個接口,多種實現;繼承的表現就是多態(沒有繼承就沒有多態。)
a應用程式不必為每一個派生類編寫功能調用,只需要對抽象基類進行處理即可。大大提高程序的可復用性。
b派生類的功能可以被基類的方法或引用變量所調用,這叫向後兼容,可以提高可擴充性和可維護性。
優點:a可替換性(可以替換一存在的代碼);
b可擴充性(增加新的子類不影響原有類的特性);
c接口性;
d靈活性;
e簡化性
缺點:a「遮蓋」私有方法。只有非private的方法才能夠被籠罩,儘管編譯器不會報錯,然而也不會遵照我們所渴望的來實行。在導出類中,對於基類中的private方法,優秀採納不同的名字。
b域在轉型時候的問題。對於成員變量(域),導出類將佔有從基類承襲而來的成員變量和自己的成員變量(變量名字相一同也是如此),況且,將分攤不同的存儲空間,這麼,導出類將具有兩個名目一樣的域。為了取得基類的域,務須實際地著名super.field能力走訪,而默許的域則是導出類自己的域。
c靜態計策是與類相關係的,而非與某個對象相干聯的,那麼它就不擁有多態行動。
4、 什麼是重載?什麼是重寫?
重載:
a方法重載是讓類以統一的方式處理不同類型數據的一種手段。多個同名函數同時存在,具有不同的參數個數/類型。重載Overloading是一個類中多態性的一種表現。
b Java的方法重載,就是在類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法, 這就是多態性。
c重載的時候,方法名要一樣,但是參數類型和個數不一樣,返回值類型可以相同也可以不相同。無法以返回型別作為重載函數的區分標準。
重寫:
a父類與子類之間的多態性,對父類的函數進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。
b若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。
c子類函數的訪問修飾權限不能少於父類的;
5、 什麼是組合?
組合: a通過創建一個由其他對象組合的對象來獲得新功能的重用方法
b新功能的獲得是通過調用組合對象的功能實現的
c有時又叫聚合
優點:a被包含對象通過包含他們的類來訪問
b黑盒重用,因為被包含對象的內部細節是不可見的
c很好的封裝
d每個類專注於一個任務
e通過獲得和被包含對象的類型相同的對象引用,可以在運行時動態定義組合的方式
缺點:a結果系統可能會包含更多的對象
b為了使組合時可以使用不同的對象,必須小心的定義接口
推薦微信公眾號:菜鳥要飛(←長按複製)
【菜鳥要飛】專注於分享最全的編程開發視頻學習資料。目前已整理的視頻有c/c++,遊戲開發,Android,ios,windowsphone8,javaweb,asp.net,php,黑客技術,Hadoop,javascript等