示例解析java面向?qū)ο缶幊谭庋b與訪問(wèn)控制
封裝(Encapsulation)
是面向?qū)ο缶幊痰囊粋€(gè)核心概念,它意味著將數(shù)據(jù)(屬性)和方法(操作數(shù)據(jù)的函數(shù))捆綁在一起,形成一個(gè)類(Class)。封裝的目的是將數(shù)據(jù)和操作數(shù)據(jù)的方法隱藏起來(lái),以防止外部對(duì)數(shù)據(jù)的直接訪問(wèn)。這樣,我們就可以通過(guò)定義公共接口(Public Interface)來(lái)控制外部對(duì)類的訪問(wèn),提高代碼的可維護(hù)性和安全性。
Java 提供了四種訪問(wèn)修飾符(Access Modifier)來(lái)實(shí)現(xiàn)封裝,它們分別是:public
、private
、protected
和不寫(xiě)(默認(rèn))。訪問(wèn)修飾符可以修飾類的屬性和方法,不同的訪問(wèn)修飾符有不同的訪問(wèn)權(quán)限。
- public:最高權(quán)限,表示該屬性或方法可以被任何其他類訪問(wèn)。
- private:最低權(quán)限,表示該屬性或方法只能被其所在的類訪問(wèn)。
- protected:較低權(quán)限,表示該屬性或方法可以被其所在類及其子類和同一包中的其他類訪問(wèn)。
- 默認(rèn):表示該屬性或方法可以被其所在類和同一包中的其他類訪問(wèn),但不能被子類訪問(wèn)。
通過(guò)案例了解這四種訪問(wèn)修飾符
// 位于包 com.example 的 Person 類 package com.example; public class Person { public String name; // 公共屬性,任何類都可以訪問(wèn) private int age; // 私有屬性,只能在 Person 類中訪問(wèn) protected String address; // 受保護(hù)屬性,可以在 Person 類,同一包中的類和子類中訪問(wèn) String phoneNumber; // 默認(rèn)屬性,可以在 Person 類和同一包中的類訪問(wèn),但不能被子類訪問(wèn) public void sayHello() { // 公共方法,任何類都可以訪問(wèn) System.out.println("Hello! I am " + name); } private void growUp() { // 私有方法,只能在 Person 類中訪問(wèn) age++; } protected void changeAddress(String newAddress) { // 受保護(hù)方法,可以在 Person 類,同一包中的類和子類中訪問(wèn) address = newAddress; } void updatePhoneNumber(String newNumber) { // 默認(rèn)方法,可以在 Person 類和同一包中的類訪問(wèn),但不能被子類訪問(wèn) phoneNumber = newNumber; } }
// 位于包 com.example 的 Employee 類 package com.example; public class Employee extends Person { public void work() { sayHello(); // 可以訪問(wèn)父類的公共方法 sayHello changeAddress("New York"); // 可以訪問(wèn)父類的受保護(hù)方法 changeAddress } }
// 位于包 com.other 的 Another 類 package com.other; import com.example.Person; public class Another { public void test() { Person person = new Person(); person.sayHello(); // 可以訪問(wèn) Person 類的公共方法 sayHello } }
這個(gè)例子中,Person
類有四個(gè)屬性和四個(gè)方法,分別使用了四種不同的訪問(wèn)修飾符。Employee
類繼承了 Person
類,可以訪問(wèn)其公共方法和受保護(hù)方法。Another
類雖然不在同一包中,但是可以訪問(wèn) Person
類的公共方法。
當(dāng)我們?cè)O(shè)計(jì)類時(shí),應(yīng)該盡量將屬性設(shè)置為 private
,并通過(guò)公共方法(如 getter 和 setter)來(lái)訪問(wèn)這些屬性。這樣做可以確保類的實(shí)現(xiàn)細(xì)節(jié)不會(huì)泄露給外部,提高代碼的可維護(hù)性和安全性。
總結(jié)
封裝和訪問(wèn)控制是面向?qū)ο缶幊痰暮诵母拍钪弧Mㄟ^(guò)使用訪問(wèn)修飾符,我們可以限制類的屬性和方法的訪問(wèn)權(quán)限,從而保護(hù)類的實(shí)現(xiàn)細(xì)節(jié)。理解這些概念并在實(shí)際編程中應(yīng)用它們,可以幫助我們編寫(xiě)更加健壯、可維護(hù)的代碼。
以上就是示例解析java封裝與訪問(wèn)控制的詳細(xì)內(nèi)容,更多關(guān)于java封裝訪問(wèn)控制的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用SpringMVC在redirect重定向的時(shí)候攜帶參數(shù)的問(wèn)題
這篇文章主要介紹了使用SpringMVC在redirect重定向的時(shí)候攜帶參數(shù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03在IDEA中配置tomcat并創(chuàng)建tomcat項(xiàng)目的圖文教程
這篇文章主要介紹了在IDEA中配置tomcat并創(chuàng)建tomcat項(xiàng)目的圖文教程,需要的朋友可以參考下2020-07-07Java中JFrame實(shí)現(xiàn)無(wú)邊框無(wú)標(biāo)題方法
這篇文章主要介紹了Java中JFrame實(shí)現(xiàn)無(wú)邊框無(wú)標(biāo)題方法,本文直接給出代碼實(shí)例,需要的朋友可以參考下2015-05-05詳解SpringBoot中Controller接收對(duì)象列表實(shí)現(xiàn)
這篇文章主要介紹了詳解SpringBoot中Controller接收對(duì)象列表實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05在Java中將List轉(zhuǎn)換為String輸出過(guò)程解析
這篇文章主要介紹了在Java中將List轉(zhuǎn)換為String輸出過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09