Java超詳細(xì)介紹封裝與訪問(wèn)控制修符
概念:我們?cè)趯懭胍粋€(gè)類的時(shí)候,為了保護(hù)里邊的屬性不被隨意的調(diào)用這是我們可以使用特殊的修飾符進(jìn)行相應(yīng)的保護(hù),而這樣的話我們似乎只能在該類中調(diào)用使用了,出現(xiàn)某些特殊情況時(shí)就會(huì)無(wú)法發(fā)調(diào)用,雖然挺高了安全性但也降低了靈活性,這個(gè)時(shí)候我們的包裝類就出現(xiàn)了,我們通過(guò)對(duì)某個(gè)方法的進(jìn)行特殊方法的包裝來(lái)對(duì)其進(jìn)行相應(yīng)的調(diào)用與賦值。就相當(dāng)于銀行為了保護(hù)財(cái)產(chǎn)會(huì)選擇將金錢放進(jìn)保險(xiǎn)柜中來(lái)確保其的安全,但是當(dāng)我們要取錢時(shí),銀行就要拿鑰匙打開(kāi)保險(xiǎn)柜。修飾符相當(dāng)于銀行的保險(xiǎn)柜,封裝相當(dāng)于保險(xiǎn)柜的鑰匙。
訪問(wèn)修飾符如下:
1) public 公共控制修飾符
2) protected 保護(hù)訪問(wèn)控制修飾符
3) default 缺省默認(rèn)控制修飾符
4) private 私有訪問(wèn)控制符
它們的訪問(wèn)權(quán)限如下圖:

包裝的特點(diǎn):
1)便于正確使用系統(tǒng),防止錯(cuò)誤修改屬性
2)有助于系統(tǒng)之間的松耦合,提高系獨(dú)立性
3)提高軟件的重用性
4)降低了構(gòu)建大型系統(tǒng)的風(fēng)險(xiǎn)
包裝的快捷鍵:
大部分的編譯軟件都有相應(yīng)的包裝快捷鍵就例如我用的開(kāi)發(fā)工具idea就像相對(duì)應(yīng)的get()set()有參無(wú)參構(gòu)造方法如下圖
我們右鍵單擊后會(huì)出現(xiàn)相應(yīng)選項(xiàng)我們點(diǎn)擊Generate,也有相應(yīng)的快捷鍵Alt+Insert直接打開(kāi)Generate

進(jìn)入Generate后我們選擇Constructor

該選項(xiàng)是選擇無(wú)參和有參構(gòu)造的,我們?nèi)x點(diǎn)擊OK即可將所有的私有屬性進(jìn)行有參構(gòu)造,點(diǎn)擊
Select None則是進(jìn)行無(wú)參構(gòu)造

再次進(jìn)入Generate后我們選擇Getter and Setter

該選項(xiàng)是構(gòu)造方法引入和修改私有屬性,Getter()表示獲屬性,Setter()表示修改屬性,進(jìn)入后我們?nèi)x點(diǎn)擊OK,就可以進(jìn)行構(gòu)造。

測(cè)試類代碼如下:
package com.ytzl.total;
/*封裝類*/
public class test {
public static void main(String[] args) {
//實(shí)例化一個(gè)對(duì)象
encapsulation encapsulation = new encapsulation();
System.out.println("通過(guò)封裝方法獲取封裝類中的私有屬性==>"+encapsulation.getA());
System.out.println("通過(guò)封裝方法獲取封裝類中的私有屬性==>"+encapsulation.getB());
//我們也可以通過(guò)相應(yīng)的構(gòu)造方法來(lái)改變風(fēng)種類中的私有屬性
encapsulation.setA(20);
encapsulation.setB("被是同相應(yīng)的構(gòu)造方法進(jìn)行改變");
System.out.println("通過(guò)封裝方法獲取封裝類中的私有屬性==>"+encapsulation.getA());
System.out.println("通過(guò)封裝方法獲取封裝類中的私有屬性==>"+encapsulation.getB());
//我們也可以通過(guò)封裝方法來(lái)改變封裝類中的私有屬性
encapsulation encapsulation1 = new encapsulation(10,"被調(diào)用方法改變后");
System.out.println("通過(guò)調(diào)用方法類來(lái)改變封裝類中的私有屬性后==>"+encapsulation1.getA());
System.out.println("通過(guò)調(diào)用方法類來(lái)改變封裝類中的私有屬性后==>"+encapsulation1.getB());
}
}實(shí)體類代碼如下:
package com.ytzl.total;
public class encapsulation {
private int a=8;
private String b="私有屬性";
public encapsulation() {
}
//如果需要在調(diào)用方法中改變私有屬性需要調(diào)用該有參方法
public encapsulation(int a, String b) {
this.a = a;
this.b = b;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
}運(yùn)行結(jié)果如下:

到此這篇關(guān)于Java超詳細(xì)介紹封裝與訪問(wèn)控制修符的文章就介紹到這了,更多相關(guān)Java封裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring中@Scheduled和HttpClient的連環(huán)坑
這篇文章主要給大家介紹了關(guān)于Spring中@Scheduled和HttpClient的連環(huán)坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03
簡(jiǎn)單談?wù)凷truts動(dòng)態(tài)表單(DynamicForm)
下面小編就為大家?guī)?lái)一篇簡(jiǎn)單談?wù)凷truts動(dòng)態(tài)表單(DynamicForm)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
一分鐘入門Java Spring Boot徹底解決SSM配置問(wèn)題
Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。該框架使用了特定的方式來(lái)進(jìn)行配置,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置。通過(guò)這種方式,Spring Boot致力于在蓬勃發(fā)展的快速應(yīng)用開(kāi)發(fā)領(lǐng)域成為領(lǐng)導(dǎo)者2021-10-10
Spring 使用Validation 驗(yàn)證框架的問(wèn)題詳解
Spring Boot在內(nèi)部通過(guò)集成hibernate-validation已經(jīng)實(shí)現(xiàn)了JSR-349驗(yàn)證規(guī)范接口,在Spring Boot項(xiàng)目中只要直接使用就行了。 一般用在Controller中用于驗(yàn)證前端傳來(lái)的參數(shù)。這篇文章給大家介紹Spring Validation 驗(yàn)證框架的相關(guān)知識(shí),感興趣的朋友一起看看吧2021-07-07
詳解java爬蟲jsoup解析多空格class數(shù)據(jù)
在本篇內(nèi)容中小編給大家分享了java爬蟲jsoup怎么解析多空格class數(shù)據(jù)的方法和技巧,需要的朋友們跟著學(xué)習(xí)下。2018-12-12
Java如何調(diào)用wsdl的webservice接口
這篇文章主要介紹了Java如何調(diào)用wsdl的webservice接口問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05

