java中封裝的實(shí)現(xiàn)方法詳解
1、封裝是什么?以及為什么要進(jìn)行封裝?
通常情況下可以給成員變量賦值一些合法但不合理的數(shù)值,這種情況在編譯階段和運(yùn)行階段都不會(huì)報(bào)錯(cuò)或給出任何的提示信息,此數(shù)值雖然合法但與現(xiàn)實(shí)生活不符;為了避免上述問題的發(fā)生,就需要對(duì)成員變量進(jìn)行密封包裝處理來保證該成員變量的合法合理性,這種機(jī)制就叫做封裝。封裝可以被認(rèn)為是一個(gè)保護(hù)屏障,防止該類的代碼和數(shù)據(jù)被外部類定義的代碼隨機(jī)訪問。要訪問該類的代碼和數(shù)據(jù),必須通過嚴(yán)格的接口控制。
2、如何進(jìn)行封裝?
(1)私有化成員變量,使用private關(guān)鍵字修飾;
(2)提供公有的get和set方法,在方法體中進(jìn)行合理值的判斷,使用public關(guān)鍵字修飾;
(3)在構(gòu)造方法中使用set方法進(jìn)行合理值的判斷;
3、事例如下/*Person.java*/
/* 編程實(shí)現(xiàn)Person類的封裝 */ public class Person{ //1.私有化成員變量,使用private關(guān)鍵字修飾 private String name; private int age; private String country; //使用static關(guān)鍵字修飾成員變量表示提升為類層級(jí)只有一份被所有對(duì)象共享 //public static String country; //3.在構(gòu)造方法中調(diào)用set方法進(jìn)行合理值的判斷 public Person(){ } public Person(String name, int age, String country){ setName(name); setAge(age); setCountry(country); } //2.提供公有的get和set方法,在方法體中進(jìn)行合理值的判斷 public String getName(){ return name; } public void setName(String name){ this.name = name; } public int getAge(){ return age; } public void setAge(int age){ if(age > 0 && age < 150){ this.age = age; }else{ System.out.println("年齡不合理?。。?); } } public String getCountry(){ return country; } public void setCountry(String country){ this.country = country; } public void show(){ System.out.println("我是" + getName() + ",今年" + getAge() + "歲了,來自" + getCountry() + "!"); } //自定義成員方法描述吃飯的行為 public void eat(String food){ System.out.println(food + "真好吃!"); } //自定義成員方法描述娛樂的行為 public void play(String game){ System.out.println(game + "真好玩!"); } }
相關(guān)文章
Spring?EnableAsync注解異步執(zhí)行源碼解析
這篇文章主要為大家介紹了Spring?EnableAsync注解源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11深入淺析Netty 在 Dubbo 中是如何應(yīng)用的
國內(nèi)知名框架 Dubbo 底層使用的是 Netty 作為網(wǎng)絡(luò)通信,那么內(nèi)部到底是如何使用的呢?今天通過本文給大家詳細(xì)講解,對(duì)Netty 在 Dubbo中應(yīng)用相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2020-05-05SpringBoot中實(shí)現(xiàn)數(shù)據(jù)字典的示例代碼
這篇文章主要介紹了SpringBoot中實(shí)現(xiàn)數(shù)據(jù)字典的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Java實(shí)現(xiàn)解析dcm醫(yī)學(xué)影像文件并提取文件信息的方法示例
這篇文章主要介紹了Java實(shí)現(xiàn)解析dcm醫(yī)學(xué)影像文件并提取文件信息的方法,結(jié)合實(shí)例形式分析了java基于第三方庫文件針對(duì)dcm醫(yī)學(xué)影像文件的解析操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-04-04eclipse啟動(dòng)一個(gè)Springboot項(xiàng)目
本文主要介紹了eclipse啟動(dòng)一個(gè)Springboot項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Java實(shí)現(xiàn)Dijkstra算法的示例代碼
Dijkstra(迪杰斯特拉)算法是典型的單源最短路徑算法,用于計(jì)算一個(gè)節(jié)點(diǎn)到其他所有節(jié)點(diǎn)的最短路徑。本文主要介紹了實(shí)現(xiàn)這一算法的Java代碼,需要的可以參考一下2022-07-07Spring Cloud OAuth2中/oauth/token的返回內(nèi)容格式
Spring Cloud OAuth2 生成access token的請(qǐng)求/oauth/token的返回內(nèi)容就需要自定義,本文就詳細(xì)介紹一下,感興趣的可以了解一下2021-07-07springboot中實(shí)現(xiàn)上傳文件的功能簡(jiǎn)單示例
這篇文章主要給大家介紹了關(guān)于springboot中實(shí)現(xiàn)上傳文件功能的相關(guān)資料,在Spring Boot中實(shí)現(xiàn)文件上傳下載功能相對(duì)簡(jiǎn)單,文中給出了代碼示例,需要的朋友可以參考下2023-09-09