Java面向對象的三個特徵與含義

我覺得只要學過OO軟件開發的,就會知道OO的三個最主要的特徵:

1.封裝

將事物的屬性(描述該同一事物的特徵)和行爲(描述該同一事物的操作)進行統一歸納到一個類中,好處是信息隱藏和模塊化,提高安全性。

封裝的主要作用在於對外隱藏內部實現細節,增強程序的安全性。

其中封裝後,大致有4種對外公開的修飾符:private;

                 (默認)default;

                  protected;

                  public。

這四種分別對封裝好後的類進行不同程度的操作使用。

2.繼承

有些具體的事物可能會有特殊的行爲和屬性,但是他們都可能屬於某一個大事物,這樣的事物可以讓他繼承這個大事物,我們稱它爲子類,大事物爲父類;子類可以繼承父類的成員屬性和行爲,其子類也將擁有父類的所有。


繼承概念的實現方式有二類:實現繼承與接口繼承。實現繼承是指直接使用基類的屬性和方法而無需額外編碼的能力;接口繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現的能力。


繼承的特性: 

        1.單一繼承。 

        2.子類只能繼承父類的非私有成員變量和方法。 

        3.成員變量的隱藏和方法的覆蓋。 


繼承主要作用:可以提高代碼的複用性


3.多態

從繼承的定義,我們可以很清楚地知道有很多特殊的行爲和屬性的子類可能都屬於某個大事物。但是這個大事物也有一個公共的行爲可能與這些特殊的具體子類共有,只是每個具體的子類的行爲可能各盡不同 (我們稱之爲重寫,也是運行時多態)。還有一種可能就是這個子類擁有一個公共行爲,但是這個子類可能會根據事實情況來做出不同的行爲(我們稱之爲重載,也是編譯時多態)


重載和覆蓋是 java 多態性的不同表現方式。 


重載是在一個類中多態性的一種表現,是指在一個類中定義了多個同名的 方法,但是他們有不同的參數個數或有不同的參數類型。 在使用重載時要注意以下幾點: 

        1.重載只能通過不同的方法參數來區分。例如不同的參數類型,不同的 參數個數,不同的參數順序。 

        2.不能通過訪問權限、返回類型、拋出的異常進行重載。 


覆蓋是指子類函數覆蓋父類中的函數。 在覆蓋時要注意以下幾點: 

        1.覆蓋的方法的函數名和參數必須要和被覆蓋的方法的函數名和參數完全匹配,才能達到覆蓋的效果;

        2.覆蓋的方法的返回值必須和被覆蓋的方法的返回值類型一致; 

        3.覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者 是其子類; 

        4.被覆蓋的方法不能爲 private,否則在其子類中只是新定義了一個方法, 並沒有對其進行覆蓋。 

        5. 子類函數的訪問修飾權限要大於等於父類的 (public>protected>default>private) 。

        特別注意:Java 中,子類無法覆蓋父類的 static 方法或 private 方法。 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章