面向對象的本質:以類的方式組織代碼,以對象的方式組織數據。
面向對象三大特性:封裝?繼承?多態
封裝:
概念:
隱藏對象內部的復雜性,只對外公開簡單的接口。便于外界調用,從而提高系統的可擴展性,可維護性。
程序設計要求“高內聚,低耦合”。
實現:
使用訪問控制符,實現封裝:
private:僅同一個類里可以看到
default:同一個類和同一個包中可以看到
protected:同一個類、同一個包和子類中可以看到(不同包的子類也可以看到)
public:公開,所有類都可以看到
要點:
類的屬性的處理:一般使用private(除非本屬性確定會讓子類繼承)。
提供相應的get/set方法來訪問相關屬性,從而提供對屬性的讀取操作。
===================================================================
繼承:
概念:
繼承是類與類之間的一種關系。
類是對對象的抽象,繼承是對某一批類的抽象。
子類繼承父類,可以得到父類的全部屬性和方法(除了父類的構造方法)。
子類是父類的擴展,提高代碼的復用性。
java中只有單繼承,沒有多繼承,多繼承可以通過接口來實現。
extends:
在子類加上extends關鍵字繼承相應的父類。
final:
final修飾類,則該類不可被繼承。
方法的重寫:
在子類中可以根據需要對從父類中繼承來的方法進行重寫。
重寫方法必須和被重寫方法具有相同方法名稱、參數列表和返回類型。
重寫方法不能使用比被重寫方法更嚴格的訪問權限。(因為:父類引用指向子類對象)
===================================================================
多態:
概念:
多態就是對象的多種形態
多態性可以用來實現動態聯編,程序的最終狀態只有在執行過程中才被決定而并非在編譯期間就決定了。
好處:
提高系統的靈活性和擴展性。
引用變量的兩種類型:
編譯時類型(模糊一點,一般是一個父類)由聲明時的類型決定。
運行時類型(運行時,具體是哪個子類就是哪個子類)由實際對應的對象類型決定。
多態的存在要有三個必要條件:
要有繼承,要有方法重寫,父類引用指向子類對象。