詳解--數據封裝

在優銳課的java架構學習中,數據封裝是使用對象編程時要掌握的最重要概念。 在面向對象的編程中,數據封裝與以下方面有關:

結合數據及其在一個地方的處理方式。 這是通過對象的狀態(私有字段)和行爲(公共方法)實現的。
僅允許通過行爲訪問和修改對象的狀態。 然後可以嚴格控制對象狀態中包含的值。
隱藏對象工作原理的詳細信息。 外界可以訪問的對象的唯一部分是其行爲。 這些行爲內部發生的事情以及狀態的存儲方式都無法看到。

實施數據封裝
首先,我們必須設計對象,使其具有狀態和行爲。 我們創建包含狀態的私有字段和作爲行爲的公共方法。

例如,如果我們設計一個人員對象,則可以創建私有字段來存儲人員的名字,姓氏和地址。 這三個字段的值組合在一起形成對象的狀態。 我們還可以創建一個名爲displayPersonDetails的方法,以在屏幕上顯示名字,姓氏和地址的值。

接下來,我們必須做出訪問和修改對象狀態的行爲。 這可以通過三種方式完成:
接下來,我們必須做出訪問和修改對象狀態的行爲。 這可以通過三種方式完成:

構造方法。 通過調用構造方法創建對象的新實例。 可以將值傳遞給構造函數方法以設置對象的初始狀態。 有兩個有趣的事情要注意。 首先,Java並不堅持每個對象都有構造函數方法。 如果不存在任何方法,則對象的狀態將使用私有字段的默認值。 第二,可以存在多個構造方法。 這些方法在傳遞給它們的值以及它們如何設置對象的初始狀態方面會有所不同。

存取器方法。 對於每個私有字段,我們可以創建一個將返回其值的公共方法。

Mutator方法。 對於每個私有字段,我們可以創建一個公共方法來設置其值。 如果你希望私有字段是隻讀的,請不要爲其創建一個mutator方法。
例如,我們可以將person對象設計爲具有兩個構造方法。 第一個不帶任何值,只是將對象設置爲默認狀態(即,名字,姓氏和地址爲空字符串)。 第二個從傳遞給它的值中設置名字和姓氏的初始值。 我們還可以創建三個訪問器方法,分別稱爲getFirstName,getLastName和getAddress,它們僅返回相應私有字段的值。 創建一個名爲setAddress的mutator字段,該字段將設置地址私有字段的值。

最後,我們隱藏對象的實現細節。 只要我們堅持將狀態字段設爲私有,並將行爲公開化,外界就無法知道對象在內部如何工作。

數據封裝的原因

採用數據封裝的主要原因是:

保持對象狀態合法。通過強制使用公共方法修改對象的私有字段,我們可以將代碼添加到mutator或構造方法中,以確保該值合法。例如,假設人員對象還存儲用戶名作爲其狀態的一部分。用戶名用於登錄我們正在構建的Java應用程序,但長度不能超過10個字符。我們可以做的是將代碼添加到用戶名的mutator方法中,以確保用戶名的值不超過十個字符。

我們可以更改對象的實現。只要我們保持公共方法不變,我們就可以更改對象的工作方式而不會破壞使用它的代碼。該對象實質上是調用它的代碼的“黑匣子”。

對象的重複使用。我們可以在不同的應用程序中使用相同的對象,因爲我們已經將數據及其在一個地方的處理方式進行了組合。

每個對象的獨立性。如果一個對象的編碼不正確並導致錯誤,則由於代碼位於一個位置,因此很容易測試和修復。實際上,可以與應用程序的其餘部分無關地測試對象。可以在大型項目中使用相同的原理,在大型項目中,可以爲不同的程序員分配不同的對象。

喜歡這篇文章的可以點個贊,歡迎大家留言評論,記得關注我,每天持續更新技術乾貨、職場趣事、海量面試資料等等
如果你對java技術很感興趣也可以+ qq羣:907135806 交流學習,共同學習進步。
不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代

文章寫道這裏,歡迎完善交流。最後奉上近期整理出來的一套完整的java架構思維導圖,分享給大家對照知識點參考學習。有更多JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java乾貨加vx:ddmsiqi 領取啦

在這裏插入圖片描述

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