我以爲只要學過OO軟件開發的,就會知道OO的三個最主要的特徵:java
1.封裝安全
將事物的屬性(描述該同一事物的特徵)和行爲(描述該同一事物的操做)進行統一概括到一個類中,好處是信息隱藏和模塊化,提升安全性。ide
封裝的主要做用在於對外隱藏內部實現細節,加強程序的安全性。模塊化
其中封裝後,大體有4種對外公開的修飾符:private;函數
(默認)default;編碼
protected;spa
public。orm
這四種分別對封裝好後的類進行不一樣程度的操做使用。繼承
2.繼承接口
有些具體的事物可能會有特殊的行爲和屬性,可是他們均可能屬於某一個大事物,這樣的事物可讓他繼承這個大事物,咱們稱它爲子類,大事物爲父類;子類能夠繼承父類的成員屬性和行爲,其子類也將擁有父類的全部。
繼承概念的實現方式有二類:實現繼承與接口繼承。實現繼承是指直接使用基類的屬性和方法而無需額外編碼的能力;接口繼承是指僅使用屬性和方法的名稱、可是子類必須提供實現的能力。
繼承的特性:
1.單一繼承。
2.子類只能繼承父類的非私有成員變量和方法。
3.成員變量的隱藏和方法的覆蓋。
繼承主要做用:能夠提升代碼的複用性。
3.多態
從繼承的定義,咱們能夠很清楚地知道有不少特殊的行爲和屬性的子類可能都屬於某個大事物。可是這個大事物也有一個公共的行爲可能與這些特殊的具體子類共有,只是每一個具體的子類的行爲可能各盡不一樣 (咱們稱之爲重寫,也是運行時多態)。還有一種可能就是這個子類擁有一個公共行爲,可是這個子類可能會根據事實狀況來作出不一樣的行爲(咱們稱之爲重載,也是編譯時多態)
重載和覆蓋是 java 多態性的不一樣表現方式。
重載是在一個類中多態性的一種表現,是指在一個類中定義了多個同名的 方法,可是他們有不一樣的參數個數或有不一樣的參數類型。 在使用重載時要注意如下幾點:
1.重載只能經過不一樣的方法參數來區分。例如不一樣的參數類型,不一樣的 參數個數,不一樣的參數順序。
2.不能經過訪問權限、返回類型、拋出的異常進行重載。
覆蓋是指子類函數覆蓋父類中的函數。 在覆蓋時要注意如下幾點:
1.覆蓋的方法的函數名和參數必需要和被覆蓋的方法的函數名和參數徹底匹配,才能達到覆蓋的效果;
2.覆蓋的方法的返回值必須和被覆蓋的方法的返回值類型一致;
3.覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者 是其子類;
4.被覆蓋的方法不能爲 private,不然在其子類中只是新定義了一個方法, 並無對其進行覆蓋。
5. 子類函數的訪問修飾權限要大於等於父類的 (public>protected>default>private) 。
特別注意:Java 中,子類沒法覆蓋父類的 static 方法或 private 方法。