JAVA基礎 物件導向的優良特性

2021-09-12 02:38:17 字數 1049 閱讀 7717

物件導向的優良特性是封裝,繼承,多型。

封裝的意義,在於明確標識出允許外部使用的所有成員函式和資料項,或者叫介面。

有了封裝,就可以明確區分內外,使得類實現者可以修改封裝內的東西而不影響外部呼叫者;而外部呼叫者也可以知道自己不可以碰**。這就提供乙個良好的合作基礎——或者說,只要介面這個基礎約定不變,則**改變不足為慮。

繼承同時具有兩種含義:其一是繼承基類的方法,並做出自己的改變和/或擴充套件——號稱解決了**重用問題;其二是宣告某個子類相容於某基類(或者說,介面上完全相容於基類),外部呼叫者可無需關注其差別(內部機制會自動把請求派發[dispatch]到合適的邏輯)。

再說多型:基於物件所屬類的不同,外部對同乙個方法的呼叫,實際執行的邏輯不同。

很顯然,多型實際上是依附於繼承的兩種含義的:「改變」和「擴充套件」本身就意味著必須有機制去自動選用你改變/擴充套件過的版本,故無多型,則兩種含義就不可能實現。 

實踐中,繼承的第一種含義(實現繼承)意義並不很大,甚至常常是有害的。因為它使得子類與基類出現強耦合。

繼承的第二種含義非常重要。它又叫「介面繼承」。

介面繼承實質上是要求「做出乙個良好的抽象,這個抽象規定了乙個相容介面,使得外部呼叫者無需關心具體細節,可一視同仁的處理實現了特定介面的所有物件」——這在程式設計上,叫做歸一化。

歸一化使得高層的外部使用者可以不加區分的處理所有介面相容的物件集合——就好象linux的泛檔案概念一樣,所有東西都可以當檔案處理,不必關心它是記憶體、磁碟、網路還是螢幕(當然,對底層設計者,當然也可以區分出「字元裝置」和「塊裝置」,然後做出針對性的設計:細緻到什麼程度,視需求而定)。

歸一化的例項:

a、一切物件都可以序列化/tostring

b、一切ui物件都是個window,都可以響應視窗事件。

總結,物件導向的兩點好處如下,

一是通過封裝明確定義了何謂介面、何謂介面內部實現、何謂介面的外部呼叫者,使得大家各司其職,不得越界;

二是通過繼承+多型這種內建機制,在語言的層面支援歸一化的設計,並使得內行可以從**本身看到這個設計——但,注意僅僅只是支援歸一化的設計。不懂如何做出這種設計的外行仍然不可能從瞎胡鬧的設計中得到任何好處。

物件導向的優良特性

物件導向的優良特性是封裝,繼承,多型。封裝的意義,在於明確標識出允許外部使用的所有成員函式和資料項,或者叫介面。有了封裝,就可以明確區分內外,使得類實現者可以修改封裝內的東西而不影響外部呼叫者 而外部呼叫者也可以知道自己不可以碰 這就提供乙個良好的合作基礎 或者說,只要介面這個基礎約定不變,則 改變...

物件導向特性總結(Java)

1.封裝 1.1 概念 將屬性私有化,而僅提供公有的方法進行訪問。1.2 this關鍵字 解決成員變數和區域性變數的重名問題。1.3 構造方法 物件初始化,為成員變數賦初值。構造方法使用時要注意 1 構造方法的方法名必須與類名相同 2 構造方法沒有返回型別,也不能定義為void,在方法名前面不宣告方...

java物件導向的封裝特性

public class testprivate 建立乙個封裝的學生類 public class student public void playfootball 給 賦值 public void set string a else 檢視 屬性的值 public string get 給date賦值...