大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 面向?qū)ο蠓庋b的概念

面向?qū)ο蠓庋b的概念

更新時間:2021-08-25 11:52:54 來源:動力節(jié)點 瀏覽1092次

封裝是面向?qū)ο缶幊?OOP)中的基本概念之一。它描述了將數(shù)據(jù)和處理該數(shù)據(jù)的方法捆綁在一個單元中的想法,例如,Java中的一個類。

這個概念也經(jīng)常用于從外部隱藏對象的內(nèi)部表示或狀態(tài)。這稱為信息隱藏。這種機制的總體思路很簡單。如果您有一個從對象外部看不到的屬性,并將其與提供讀取或?qū)懭朐L問權(quán)限的方法捆綁在一起,那么您可以隱藏特定信息并控制對對象內(nèi)部狀態(tài)的訪問。

如果您熟悉任何面向?qū)ο蟮木幊陶Z言,您可能知道這些方法是 getter 和 setter 方法。顧名思義,getter 方法檢索屬性,setter 方法更改它。根據(jù)您實現(xiàn)的方法,您可以決定一個屬性是否可以讀取和更改,或者它是只讀的,還是根本不可見。正如稍后將向您展示的,您還可以使用 setter 方法來實現(xiàn)額外的驗證規(guī)則,以確保您的對象始終具有有效狀態(tài)。

面向?qū)ο蠓庋b的概念

Java中的封裝

這是一個如此基本的概念,以至于大多數(shù) Java 開發(fā)人員在使用它時都沒有考慮過。這只是您設計Java類的方式。您將一組存儲對象當前狀態(tài)的屬性與使用這些屬性的一組方法捆綁在一起。

該CoffeeMachine例子

例如,當創(chuàng)建CoffeeMachine類時,就是這樣做的。屬性configMap、beans、grinder和brewingUnit存儲CoffeeMachine對象的當前狀態(tài)。方法brewCoffee、brewEspresso、brewFilterCoffee和addBeans對這些屬性實現(xiàn)了一組操作。

Java中的信息隱藏

正如開頭所解釋的,您可以使用封裝概念來實現(xiàn)信息隱藏機制。與抽象概念類似,這是Java中最常用的機制之一。您可以在幾乎所有實現(xiàn)良好的Java類中找到它的示例。

您可以通過使您的類屬性無法從外部訪問并為其他類可讀或可更新的屬性提供 getter 和/或 setter 方法來實現(xiàn)這種信息隱藏機制。

訪問修飾符

Java支持四種訪問修飾符,您可以使用它們來定義類、方法和屬性的可見性。它們中的每一個都指定了不同級別的可訪問性,并且每個類、方法或?qū)傩灾荒苁褂靡粋€修飾符。根據(jù)經(jīng)驗,您應該始終使用仍然允許您實現(xiàn)業(yè)務邏輯的最嚴格的修飾符。

這些修飾符從限制最多到最少:

私人的

沒有修飾符

受保護

公開的

讓我們仔細看看這些修飾符中的每一個,并討論何時應該使用它們。

私人

這是最嚴格和最常用的訪問修飾符。如果將private修飾符與屬性或方法一起使用,則只能在同一類中訪問它。相同或不同包中的子類或任何其他類無法訪問此屬性或方法。

根據(jù)經(jīng)驗,private修飾符應該是所有不應從外部類調(diào)用的屬性和內(nèi)部方法的默認選擇。當您使用繼承時,您可能需要對該規(guī)則進行例外處理,并且某些子類需要直接訪問屬性或內(nèi)部方法。在這種情況下,您應該使用protected修飾符而不是private。

無修飾符

當您沒有為您的屬性或方法提供任何訪問修飾符時,您可以在您的類中以及從同一包中的所有類訪問它。這就是為什么它通常被稱為包私有的。

在CoffeeMachine示例中,我使用private修飾符來限制對所有屬性以及brewEspresso和brewFilterCoffee方法的訪問。這些屬性和方法只能在CoffeeMachine類中使用,而不是公共 API 的一部分。

一開始這可能看起來有點令人困惑,但是當包中的類實現(xiàn)一組明確定義的邏輯并且您想要控制可用于該包外的類的 API 時,這非常有用。然后,您可以使用包可見性來實現(xiàn)只能由該包中的類使用的方法。這允許您創(chuàng)建包內(nèi)部和外部 API。

受保護

具有訪問修飾符protected 的屬性和方法可以在您的類中、同一包中的所有類以及相同或其他包中的所有子類中訪問。

該保護的修飾符被主要用于內(nèi)部方法需要被調(diào)用或者由子類覆蓋。您還可以使用它來允許子類直接訪問超類的內(nèi)部屬性。

民眾

這是限制最少的訪問修飾符。使用public修飾符的方法和屬性可以在當前類和所有其他類中訪問。

公共方法和屬性成為您的類和包含它們的任何組件的公共 API 的一部分。對于任何屬性來說,這幾乎從來都不是一個好主意,在對方法使用此修飾符之前,您應該三思而后行。

如果一個方法是公開可用的,您需要確保它有據(jù)可查,并且它可以穩(wěn)健地處理任何輸入值。還要記住,這個方法遲早會被你的應用程序的某些部分使用,這將使更改或刪除它變得困難。

通常,您的公共 API 應盡可能精簡,并且僅包含旨在由應用程序的其他部分或外部客戶端使用的方法。

CoffeeMachine類、它的構(gòu)造函數(shù)以及brewCoffee和addBeans方法就是這種情況。該CoffeeMachine類有因為它代表了咖啡機的接口是公開的。它旨在供不必屬于同一包的其他類使用。構(gòu)造函數(shù)和對brewCoffee和addBeans方法可以被其他類調(diào)用創(chuàng)建的新實例CoffeeMachine并通過添加咖啡豆或沖泡的咖啡一杯新鮮與它進行交互。

該brewCoffee方法給出了不同的訪問修飾符的另一個好處。您不僅可以使用它來隱藏信息,還可以使用它來支持抽象。公共brewCoffee方法抽象了brewFilterCoffee和brewEspresso方法的內(nèi)部細節(jié),這兩個方法都是私有的。訪問修飾符確保外部類只能調(diào)用brewCoffee方法提供的抽象,而不能調(diào)用內(nèi)部方法。

概括

封裝是面向?qū)ο缶幊痰暮诵母拍钪弧K枋隽藢?shù)據(jù)和對這些數(shù)據(jù)進行操作的方法捆綁到一個單元中。

它通常用于實現(xiàn)信息隱藏機制。這種機制降低了屬性對當前類的可訪問性,并使用公共 getter 和 setter 方法來控制和限制對這些屬性的外部訪問。這些方法不僅允許您定義可以讀取或更新的屬性,而且還允許您在更改屬性之前驗證新值。

封裝提供了隱藏數(shù)據(jù)的基本屬性,從而為用戶數(shù)據(jù)提供了安全性。執(zhí)行封裝是一種很好的 OOP 實踐,但它仍然需要與強大的 APM 解決方案(如Retrace)搭配使用以進行錯誤監(jiān)控。

以上就是動力節(jié)點小編介紹的"面向?qū)ο蠓庋b的概念",希望對大家有幫助,想了解更多可查看Java教程。動力節(jié)點在線學習教程,針對沒有任何Java基礎(chǔ)的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關(guān)注一下。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久亚洲伊人中字综合精品 | 欧美中文字幕在线 | 免费看黄色的网站 | 国产一国产一级毛片视频在线 | 久久国产精品只做精品 | 婷婷色在线视频 | 在线成人欧美 | 日韩精品一区二区三区免费观看 | 四虎永久在线精品国产馆v视影院 | 亚洲成人高清 | 日韩在线播放中文字幕 | 国内一级特黄女人精品片 | 成人欧美视频在线看免费 | 免费观看欧美一级特黄 | 日本免费不卡在线一区二区三区 | 久久国产免费观看精品1 | 四虎影院在线免费 | 午夜国产精品色福利视频 | 亚洲区中文字幕 | 操操免费视频 | 瑟瑟在线观看 | 在线观看中文字幕一区 | 久久久四虎成人永久免费网站 | 九九精品视频在线 | 久久er热这里只有精品23 | 97综合| 欧美日本视频一区 | 色中文字幕 | 日韩高清一区二区三区不卡 | a级爱爱视频 | 国产在线观看午夜不卡 | 色综合五月激情综合色一区 | 不卡影院网| 欧美另类jizzhd | 国产麻豆高清视频在线第一页 | 久草在线视频免费 | 日日夜夜操美女 | 狠狠色丁香婷婷综合精品视频 | 在线色网站 | 亚洲狠狠婷婷综合久久久久网站 | 欧美成人爽毛片在线视频 |