13. Java類中的封裝

13. Java類中的封裝

1秃诵、Java類中的封裝

學(xué)習(xí)了訪問(wèn)權(quán)限修飾符后,應(yīng)該可以理解封裝性的概念和含義。封裝性是面向?qū)ο笕筇卣髦?封裝性是一種信息隱藏技術(shù)

2槽卫、封裝的概念

在面向?qū)ο蟪淌皆O(shè)計(jì)方法中,封裝(英語(yǔ):Encapsulation)是指一種將抽象性函式接口的實(shí)現(xiàn)細(xì)節(jié)部分包裝胰蝠、隱藏起來(lái)的方法歼培。

封裝可以被認(rèn)為是一個(gè)保護(hù)屏障震蒋,防止該類的代碼和數(shù)據(jù)被外部類定義的代碼隨機(jī)訪問(wèn)。

要訪問(wèn)該類的代碼和數(shù)據(jù)躲庄,必須通過(guò)嚴(yán)格的接口控制查剖。

封裝最主要的功能在于我們能修改自己的實(shí)現(xiàn)代碼,而不用修改那些調(diào)用我們代碼的程序片段噪窘。

適當(dāng)?shù)姆庋b可以讓程式碼更容易理解與維護(hù)笋庄,也加強(qiáng)了程式碼的安全性。

3效览、兩個(gè)含義:

-對(duì)象的全部屬性和全部方法結(jié)合在一起无切,形成一個(gè)不可分割的獨(dú)立單位 -盡可能隱藏對(duì)象的內(nèi)部結(jié)構(gòu)

4、具體表現(xiàn):

-屬性使用private權(quán)限 -方法使用public權(quán)限

5丐枉、封裝的優(yōu)點(diǎn)

  • 良好的封裝能夠減少耦合哆键。
  • 類內(nèi)部的結(jié)構(gòu)可以自由修改。
  • 可以對(duì)成員變量進(jìn)行更精確的控制瘦锹。
  • 隱藏信息籍嘹,實(shí)現(xiàn)細(xì)節(jié)。

6弯院、封裝的步驟

  1. 修改屬性的可見(jiàn)性來(lái)限制對(duì)屬性的訪問(wèn)(一般限制為private)

  2. 對(duì)每個(gè)值屬性提供對(duì)外的公共方法訪問(wèn)辱士,也就是創(chuàng)建一對(duì)賦取值方法,用于對(duì)私有屬性的訪問(wèn)

  3. 重寫從父類Object繼承下來(lái)的toString()方法听绳,來(lái)輸出自己想要的信息颂碘。

  4. 重寫從父類Object繼承的hashCode()方法,計(jì)算hashCode值椅挣,hashCode值主要用來(lái)判斷對(duì)象的屬性是否相同头岔,進(jìn)行數(shù)組的排序。

  5. 重寫從父類Object繼承的equals()方法鼠证,判斷兩個(gè)對(duì)象屬性值是否完全相同峡竣。

示例:

package com.company.practice.demo;

public class User {

    private String name;

    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}

完整代碼:

package com.company.practice.demo;

public class User {

    private String name;

    private int age;

    public User() {

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + age;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        User other = (User) obj;
        if (age != other.age)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }

    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }

}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市量九,隨后出現(xiàn)的幾起案子适掰,更是在濱河造成了極大的恐慌,老刑警劉巖荠列,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件类浪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡弯予,警方通過(guò)查閱死者的電腦和手機(jī)戚宦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)锈嫩,“玉大人受楼,你說(shuō)我怎么就攤上這事垦搬。” “怎么了艳汽?”我有些...
    開(kāi)封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵猴贰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我河狐,道長(zhǎng)米绕,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任馋艺,我火速辦了婚禮栅干,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捐祠。我一直安慰自己碱鳞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布踱蛀。 她就那樣靜靜地躺著窿给,像睡著了一般。 火紅的嫁衣襯著肌膚如雪率拒。 梳的紋絲不亂的頭發(fā)上崩泡,一...
    開(kāi)封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音猬膨,去河邊找鬼角撞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勃痴,可吹牛的內(nèi)容都是我干的靴寂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼召耘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了褐隆?” 一聲冷哼從身側(cè)響起污它,我...
    開(kāi)封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎庶弃,沒(méi)想到半個(gè)月后衫贬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡歇攻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年固惯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缴守。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡葬毫,死狀恐怖镇辉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贴捡,我是刑警寧澤忽肛,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站烂斋,受9級(jí)特大地震影響屹逛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜汛骂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一罕模、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧帘瞭,春花似錦淑掌、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至祸轮,卻和暖如春兽埃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背适袜。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工柄错, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苦酱。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓售貌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親疫萤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子颂跨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 摘自https://www.cnblogs.com/huangjialin/p/12411842.html[htt...
    牧區(qū)叔叔閱讀 354評(píng)論 0 0
  • 學(xué)習(xí)java那是不可能的恒削,到為什么不學(xué)習(xí)一下呢。僅為總結(jié)尾序。希望自己在不久的將來(lái)能書寫優(yōu)美的java程序钓丰。加油!奧利...
    Java架構(gòu)大仙閱讀 267評(píng)論 0 1
  • 在面向?qū)ο蟪淌皆O(shè)計(jì)方法中每币,封裝(Encapsulation)是指一種將抽象性函式接口的實(shí)現(xiàn)細(xì)節(jié)部分包裝携丁、隱藏起來(lái)的...
    海人為記閱讀 224評(píng)論 0 0
  • java主要特性: java語(yǔ)言是簡(jiǎn)單的java語(yǔ)言不使用指針,而是引用兰怠。并提供了自動(dòng)的廢料收集梦鉴,使得程序員不必為...
    盜夢(mèng)者_(dá)56f2閱讀 581評(píng)論 0 3
  • 1 以下屬于面向?qū)ο蟮奶卣鞯氖牵ǎ?答:面向?qū)ο蟮奶卣髦饕牵悍庋b李茫、繼承、多態(tài)尚揣。而多態(tài)的實(shí)現(xiàn)主要是函數(shù)方法的重載和...
    apollooo閱讀 6,337評(píng)論 1 2