封裝:隱藏內部功能的具體實現,只保留和外部交流數據的介面。繼承:一個對象可以從它的父類繼承所有的通用的屬性和方法,併在無需重新編寫原來的類的情況下對這些功能進行擴展;最大的好處是實現代碼的高效重用。多態:同一個動作作用於不同的對象 所產生不同的行為。 ...
Java的三大特性
Java的三大特性
封裝: 隱藏內部功能的具體實現,只保留和外部交流數據的介面,將變化隔離,便於使用,提高復用性和安全性。例:汽車與發動機,不必知道發動機的實現原理,只需使用汽車給予的介面,插入鑰匙。
繼承: 一個對象可以從它的父類繼承所有的通用的屬性和方法,併在無需重新編寫原來的類的情況下對這些功能進行擴展;最大的好處是實現代碼的高效重用。
- 關於繼承如下3點請記住:
1.子類擁有父類非 private 的屬性和方法。
2.子類可以擁有自己屬性和方法,即子類可以對父類進行擴展。
3.子類可以用自己的方式實現父類的方法。
多態: 所謂多態就是指程式中定義的引用變數所指向的具體類型和通過該引用變數發出的方法調用在編程時並不確定,而是在程式運行期間才確定,即一個引用變數到底會指向哪個類的實例對象,該引用變數發出的方法調用到底是哪個類中實現的方法,必須在由程式運行期間才能決定。
多態的實現
Java實現多態有三個必要條件:繼承、重寫、向上轉型。
1.繼承:在多態中必須存在有繼承關係的子類和父類。
2.重寫:子類對父類中某些方法進行重新定義,在調用這些方法時就會調用子類的方法。
3.向上轉型:在多態中需要將子類的引用賦給父類對象,只有這樣該引用才能夠具備技能調用父類的方法和子類的方法。
只有滿足了上述三個條件,我們才能夠在同一個繼承結構中使用統一的邏輯實現代碼處理不同的對象,從而達到執行不同的行為。
對於Java而言,它多態的實現機制遵循一個原則:當超類對象引用變數引用子類對象時,被引用對象的類型而不是引用變數的類型決定了調用誰的成員方法,但是這個被調用的方法必須是在超類中定義過的,也就是說被子類覆蓋的方法。
重載(Overload)和重寫(Override)的區別。重載的方法能否根據返回類型進行區分?
方法的重載和重寫都是實現多態的方式,區別在於前者實現的是編譯時的多態性,而後者實現的是運行時的多態性。
重載:發生在同一個類中,方法名相同參數列表不同(參數類型不同、個數不同、順序不同),與方法返回值和訪問修飾符無關,即重載的方法不能根據返回類型進行區分
重寫:發生在父子類中,方法名、參數列表必須相同,返回值小於等於父類,拋出的異常小於等於父類,訪問修飾符大於等於父類(里氏代換原則);如果父類方法訪問修飾符為private則子類中就不是重寫。
年輕