面向對象的三個基本特徵是:封裝、繼承、多態。
封裝
封裝最好理解了。封裝是面向對象的特徵之一,是對象和類概念的主要特性。
封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。
封裝的優點
- 將變化隔離
- 便於使用
- 提高重用性
- 提高安全性
封裝的缺點:
將變量等使用private修飾,或者封裝進方法內,使其不能直接被訪問,增加了訪問步驟與難度!
封裝的實現形式
- A、使用訪問權限修飾符private 在定義JavaBean時對於成員變量使用private進行修飾,同時對外提供set、get方法 使用了private修飾的成員在其他類中不能直接訪問,此時需要使用set、get方法進行。
- B、定義一個Java類與Java的方法就是最簡單最常見的面向對象的封裝操作,這些操作符合隱藏實現細節,提供訪問方式的思路。
繼承
面向對象編程 (OOP) 語言的一個主要功能就是“繼承”。繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴展。
通過繼承創建的新類稱為“子類”或“派生類”。
被繼承的類稱為“基類”、“父類”或“超類”。
繼承的過程,就是從一般到特殊的過程。
要實現繼承,可以通過“繼承”(Inheritance)和“組合”(Composition)來實現。
在Java語言中,一個類只能單繼承,可以實現多個接口。繼承就是子類繼承父類的特徵和行為,使得子類對象具有父類的非private屬性和方法。
類的繼承格式:
通過extends關鍵字申明一個類繼承另一個類,如
class父類{}
class子類extends父類{}
為什麼需要繼承?
- 減少代碼重複、臃腫,提高代碼可維護性。
繼承的特性:
- 子類擁有父類非private的屬性和方法;
- 子類可以擁有完全屬於自己的屬性和方法(對父類擴展);
- Java是單繼承(每個子類只能繼承一個父類);但是Java可以是多重繼承(如A繼承B,B繼承C)。
Super和this關鍵字:
Super關鍵字:我們可以通過super關鍵字來實現子類對父類成員的訪問,引用當前實例對象的父類。
This關鍵字:指向實例對象自己的引用。
多態
多態就是同一個接口,使用不同的實現,而執行不同的操作。
多態的三個必要條件:
- 繼承(extends)
- 重寫(子類重寫父類的同名方法)
- 父類引用指向子類的對象,如:
子類繼承父類,重寫父類的方法,當子類對象調用重寫的方法時,調用的是子類的方法,而不是父類的方法,當想要調用父類中被重寫的方法時,則需使用關鍵字super。
閱讀更多 cherrycoding 的文章