封裝性的概念與操作方法
封裝性是面向?qū)ο笏枷氲娜筇卣髦唬ㄆ渌麅蓚€(gè)特性是繼承和多態(tài))。
封裝就是隱藏實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外提供訪問(wèn)接口。
封裝有:屬性的封裝、方法的封裝、類的封裝、組件的封裝、模塊化封裝、系統(tǒng)級(jí)封裝等等。
如果屬性沒(méi)有進(jìn)行封裝,那么在本類之外創(chuàng)建對(duì)象后,可以直接訪問(wèn)屬性。
對(duì)于屬性或方法來(lái)說(shuō),使用關(guān)鍵字private(訪問(wèn)權(quán)限修飾符)可進(jìn)行封裝,private表示私有的,私有的屬性或者方法,只能在本類中訪問(wèn)。
想要在類外部訪問(wèn)私有屬性,需要提供公有的方法進(jìn)行間接訪問(wèn)。
成員變量和局部變量
在類中的位置不同
成員變量:在類中定義
局部變量:在方法中定義或者是方法中的參數(shù)
在內(nèi)存中的位置不同
成員變量:在堆內(nèi)存
局部變量:在棧內(nèi)存
生命周期不同
成員變量:隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的銷毀而消失
局部變量:隨著方法的調(diào)用而存在,隨著方法的調(diào)用完成而消失
初始化值不同
成員變量:有默認(rèn)初始化值,引用類型默認(rèn)為null
局部變量:沒(méi)有默認(rèn)初始化值,必須定義,賦值,才能使用。
Java的封裝性
信息的封裝與隱藏
使用者對(duì)類內(nèi)部定義的屬性(對(duì)象的成員變量)的直接操作會(huì)導(dǎo)致數(shù)據(jù)的錯(cuò)誤、混亂或安全性問(wèn)題。在面向?qū)ο蟪淌皆O(shè)計(jì)方法中,封裝(英語(yǔ):Encapsulation)是指一種將抽象性函式接口的實(shí)現(xiàn)細(xì)節(jié)部份包裝、隱藏起來(lái)的方法。
封裝是指隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外提供公共訪問(wèn)方式。封裝可以被認(rèn)為是一個(gè)保護(hù)屏障,防止該類的代碼和數(shù)據(jù)被外部類定義的代碼隨機(jī)訪問(wèn)。要訪問(wèn)該類的代碼和數(shù)據(jù),必須通過(guò)嚴(yán)格的接口控制。
封裝最主要的功能在于我們能修改自己的實(shí)現(xiàn)代碼,而不用修改那些調(diào)用我們代碼的程序片段。
封裝原則:將不需要對(duì)外提供的內(nèi)容都隱藏起來(lái),把屬性都隱藏,提供公共方法對(duì)其訪問(wèn)。
封裝的好處(優(yōu)點(diǎn)):
1)通過(guò)隱藏對(duì)象的屬性來(lái)保護(hù)對(duì)象內(nèi)部的狀態(tài)(隱藏信息、實(shí)現(xiàn)細(xì)節(jié))。
2)提高了代碼的可用性和可維護(hù)性,因?yàn)閷?duì)象的行為可以被單獨(dú)的改變或者是擴(kuò)展(將變化隔離,類內(nèi)部的結(jié)構(gòu)可以自由修改,增加內(nèi)部實(shí)現(xiàn)部分的可替換性)。
3)禁止對(duì)象之間的不良交互提高模塊化(良好的封裝能夠減少耦合)。
4)可以對(duì)成員變量進(jìn)行更精確的控制。
5)容易保證類內(nèi)部數(shù)據(jù)間的一致性,從而提高軟件的可靠性。
抽象和封裝的不同點(diǎn):
抽象和封裝是互補(bǔ)的概念。一方面,抽象關(guān)注對(duì)象的行為。另一方面,封裝關(guān)注對(duì)象行為的細(xì)節(jié)。一般是通過(guò)隱藏對(duì)象內(nèi)部狀態(tài)信息做到封裝,因此,封裝可以看成是用來(lái)提供抽象的一種策略。
實(shí)現(xiàn)Java封裝
Java中通過(guò)將數(shù)據(jù)聲明為私有的(private),再提供公共的(public)方法:getXxx()和setXxx()實(shí)現(xiàn)對(duì)該屬性的操作,以實(shí)現(xiàn)下述目的:
1)隱藏一個(gè)類中不需要對(duì)外提供的實(shí)現(xiàn)細(xì)節(jié);
2)使用者只能通過(guò)事先定制好的方法來(lái)訪問(wèn)數(shù)據(jù),可以方便地加入控制邏輯,限制對(duì)屬性的不合理操作;
3)便于修改,增強(qiáng)代碼的可維護(hù)性;
為屬性封裝:

為方法封裝:

下面看一下實(shí)現(xiàn)Java封裝的示例:

JavaBean
JavaBean是一種Java語(yǔ)言寫(xiě)成的可重用組件。
所謂javaBean,是指符合如下標(biāo)準(zhǔn)的Java類:
1)類是公共的
2)有一個(gè)無(wú)參的公共的構(gòu)造器
3)有屬性,且有對(duì)應(yīng)的get、set方法
4)用戶可以使用JavaBean將功能、處理、值、數(shù)據(jù)庫(kù)訪問(wèn)和其他任何可以用java代碼創(chuàng)造的對(duì)象進(jìn)行打包,并且其他的開(kāi)發(fā)者可以通過(guò)內(nèi)部的JSP頁(yè)面、Servlet、其他JavaBean、applet程序或者應(yīng)用來(lái)使用這些對(duì)象。用戶可以認(rèn)為JavaBean提供了一種隨時(shí)隨地的復(fù)制和粘貼的功能,而不用關(guān)心任何改變。
java中什么是類的封裝性
類的封裝性即不能讓外面的類隨意修改一個(gè)類的成員變量;
在定義一個(gè)類的成員,使用private關(guān)鍵字說(shuō)明這個(gè)成員的訪問(wèn)權(quán)限,只能被這個(gè)類的其他成員方法調(diào)用,而不能被其他的類中的方法所調(diào)用;
為實(shí)現(xiàn)封裝性,常將類的成員變量聲明為private,再通過(guò)public的方法來(lái)對(duì)這個(gè)變量進(jìn)行訪問(wèn)。對(duì)一個(gè)變量的操作,一般都有 讀取和賦值操作,我們一般定義兩個(gè)方法來(lái)實(shí)現(xiàn)這兩種操作,即:getxxx()與setxxx();
一個(gè)類就是一個(gè)模塊,我們應(yīng)該讓模塊僅僅公開(kāi)必須要讓外界知道的內(nèi)容,而隱藏其他的一切內(nèi)容。再進(jìn)行程序設(shè)計(jì)時(shí),應(yīng)盡量避免一個(gè)模塊直接修改或操作另一個(gè)模塊的數(shù)據(jù),模塊設(shè)計(jì)追求強(qiáng)內(nèi)聚,弱耦合。
電子發(fā)燒友App














評(píng)論