Java之封裝

封裝是面向?qū)ο蟮娜筇卣髦弧?/p>

Java中的封裝的實(shí)質(zhì)就是將類和狀態(tài)信息(成員變量)隱藏在類的內(nèi)部空入,不允許外部程序直接訪問(wèn),而是通過(guò)該類提供的方法來(lái)實(shí)現(xiàn)對(duì)隱藏信息(成員變量)的操作和訪問(wèn)歪赢。

1.為什么要封裝

封裝是為了保護(hù)數(shù)據(jù),這里的數(shù)據(jù)是指對(duì)象的屬性(是成員變量埋凯,不是方法的局部變量)。

1.1.保護(hù)數(shù)據(jù)中的保護(hù)是什么意思扫尖?

保護(hù)是指對(duì)數(shù)據(jù)的讀寫(xiě)權(quán)限

1.2.保護(hù)是如何實(shí)現(xiàn)的藏斩?或者說(shuō)封裝是如何實(shí)現(xiàn)的?

通過(guò)訪問(wèn)修飾符實(shí)現(xiàn)的狰域。

2.訪問(wèn)修飾符

訪問(wèn)修飾符共有四個(gè):

  • public:公共的
  • protected:受保護(hù)的
  • 默認(rèn)|default(什么都不寫(xiě))
  • private:私有的

2.1.封裝之public

被public修飾的成員變量和成員方法可以在所有類中訪問(wèn)黄橘。

public修飾的屬性沒(méi)有訪問(wèn)限制屈溉,是最寬松的封裝塞关。
例如

public class Person {
    public String name;//公有
}

name可以在任何地方被訪問(wèn)呢子巾,也就是可以讀和寫(xiě)

  • pubilc修飾類:類可以在任何地方被訪問(wèn)
  • public修飾屬性和方法:屬性和方法可以在任何地方被訪問(wèn)

2.2.封裝之private

private修飾的成員變量和成員方法只能在聲明它們的類中訪問(wèn)帆赢,而不能在其他類(包括子類)中訪問(wèn)线梗。

private修飾的屬性只能在類內(nèi)被訪問(wèn)椰于,類外無(wú)法訪問(wèn)仪搔,是最嚴(yán)格的封裝。
例如:

public class Person {
    private String name;//私有
}

name屬性只能在Person類的類內(nèi)使用烤咧,類外無(wú)法使用偏陪。

  • private不能修飾類
private class Classinfo{//報(bào)錯(cuò)煮嫌,private不能修飾類

}
public class Student {

}

  • private可以修飾類的成員,無(wú)論類的成員是什么昌阿。
public class Student {
    int age;
    private class Classinfo{//不報(bào)錯(cuò),因?yàn)镃assinfo類是Student類的成員

    }
}

2.3.## 封裝之default(默認(rèn)訪問(wèn)修飾符)

默認(rèn)訪問(wèn)修飾符是指什么都不寫(xiě)宝泵。

默認(rèn)訪問(wèn)修飾符修飾的類,屬性儿奶,方法可以在同包中的類訪問(wèn)框往。

  • default可以修飾類闯捎,也可以修飾屬性椰弊,方法瓤鼻。
class Student {//Student類是默認(rèn)訪問(wèn)修飾符
    String name; //name是默認(rèn)訪問(wèn)修飾符
    Student(String name){ //構(gòu)造函數(shù)是默認(rèn)訪問(wèn)修飾符
        
    }
    void sayHello(){//sayHello方法是默認(rèn)訪問(wèn)修飾符
        
    }
}

2.4.封裝之protected

protected是為繼承而設(shè)計(jì)的訪問(wèn)修飾符。
被protected修飾的屬性或方法在子類中一定可以訪問(wèn)茬祷。無(wú)論子類是否與父類在一個(gè)包里。同包也可以訪問(wèn)。

package com.sunmer.tmp;

public class Father {
    protected int age;
    int weight;
}
package com.sunmer.tmp;

public class Sub1 extends Father{
    public static void main(String[] args) {
        Sub1 sub1 = new Sub1();
        sub1.age= 1;//可以訪問(wèn)
        sub1.weight = 1;//可以訪問(wèn)
    }
}
package com.sunmer.oop;
import com.sunmer.tmp.Father;
public class Sub2 extends Father {
    public static void main(String[] args) {
        Sub2 sub2 = new Sub2();
        sub2.age = 0;//可以訪問(wèn)
    }
}
package com.sunmer.oop;
import com.sunmer.tmp.Father;
public class Sub3 extends Sub2 {
    public static void main(String[] args) {
        Sub2 sub2 =new Sub2();
        sub2.age = 0;//不可訪問(wèn)
        Sub3 sub3 =new Sub3();
        sub3.age = 0;//可以訪問(wèn)
    }
}

※封裝的總結(jié)

訪問(wèn)修飾符 解釋
public 無(wú)限制
protected 同包 | 子類
默認(rèn) 同包
private 同類

關(guān)于面向?qū)ο蟮钠渌麅纱筇卣鲗⒃谙乱黄恼逻M(jìn)行講解滚停。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市键畴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌突雪,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惹想,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡饵婆,警方通過(guò)查閱死者的電腦和手機(jī)戏售,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)灌灾,“玉大人搓译,你說(shuō)我怎么就攤上這事锋喜。” “怎么了嘿般?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)炉奴。 經(jīng)常有香客問(wèn)我逼庞,道長(zhǎng)瞻赶,這世上最難降的妖魔是什么赛糟? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任砸逊,我火速辦了婚禮,結(jié)果婚禮上师逸,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好对湃,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著拍柒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拆讯。 梳的紋絲不亂的頭發(fā)上脂男,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天种呐,我揣著相機(jī)與錄音,去河邊找鬼爽室。 笑死汁讼,一個(gè)胖子當(dāng)著我的面吹牛阔墩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播啸箫,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼忘苛!你這毒婦竟也來(lái)了蝉娜?” 一聲冷哼從身側(cè)響起扎唾,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胸遇,沒(méi)想到半個(gè)月后扮宠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體狐榔,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年薄腻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庵楷。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡楣颠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咐蚯,到底是詐尸還是另有隱情,我是刑警寧澤春锋,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站期奔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏呐萌。R本人自食惡果不足惜馁痴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一肺孤、第九天 我趴在偏房一處隱蔽的房頂上張望罗晕。 院中可真熱鬧赠堵,春花似錦小渊、人聲如沸顾腊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吗垮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凹髓,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工蔚舀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赌躺。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像礼患,于是被迫代替她去往敵國(guó)和親是钥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 在面向?qū)ο蟪淌皆O(shè)計(jì)方法中悄泥,封裝(Encapsulation)是指一種將抽象性函式接口的實(shí)現(xiàn)細(xì)節(jié)部分包裝、隱藏起來(lái)的...
    海人為記閱讀 224評(píng)論 0 0
  • 封裝概述: 封裝是指隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié)厨相,僅對(duì)外提供公共訪問(wèn)方式 這是什么意思呢? 簡(jiǎn)單的來(lái)說(shuō)就是我將不想給別...
    編程小世界閱讀 152評(píng)論 1 0
  • 在面向?qū)ο蟪淌皆O(shè)計(jì)方法中余寥,封裝(英語(yǔ):Encapsulation)是指一種將抽象性函式接口的實(shí)現(xiàn)細(xì)節(jié)部份包裝、隱藏...
    進(jìn)擊的叉燒閱讀 600評(píng)論 0 0
  • 封裝概述: 封裝是指隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié)宋舷,僅對(duì)外提供公共訪問(wèn)方式 這是什么意思呢? 簡(jiǎn)單的來(lái)說(shuō)就是我將不想給別...
    BWH_Steven閱讀 209評(píng)論 0 2
  • Java語(yǔ)言是面向?qū)ο蟮囊婚T語(yǔ)言祝蝠,那么對(duì)象(人)可能會(huì)比較懶、會(huì)犯錯(cuò)绎狭,而且人與人是不同的细溅,這就體現(xiàn)了我們的Java...
    hello_mr_future閱讀 395評(píng)論 0 0