第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么私有 getter 方法會(huì)違反封裝性,而缺少 getter 方法則不會(huì)?

為什么私有 getter 方法會(huì)違反封裝性,而缺少 getter 方法則不會(huì)?

吃雞游戲 2023-11-10 16:18:00
我正在做 OCP 8 的一些練習(xí)題。有一個(gè)問(wèn)題涉及一個(gè)具有私有字段和私有 getter 方法的類。正確的答案是這段代碼違反了封裝性,因?yàn)?getter 方法應(yīng)該是公共的。public class A {    private String a;    private String getA() { return a; }}然而,另一個(gè)問(wèn)題是一個(gè)具有私有字段且根本沒(méi)有 getter 方法的類。正確的答案是這段代碼遵循封裝原則。public class A {    private String a;}假設(shè)所有數(shù)據(jù)字段都是私有的,那么封裝最多到最少的順序不應(yīng)該是無(wú)getter方法、私有g(shù)etter方法和公共getter方法嗎?我知道我的問(wèn)題聽(tīng)起來(lái)可能是基于意見(jiàn)的,但考試不是。
查看完整描述

2 回答

?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

私有 getter 方法不違反封裝性。那只是無(wú)稽之談。


我在這里不發(fā)表意見(jiàn)。事實(shí)上,Java 私有方法只能在聲明它的類中調(diào)用。那是在封裝的邊界內(nèi)。


要么您誤讀了 OCP 示例問(wèn)題和答案,要么他們犯了錯(cuò)誤。


現(xiàn)在,他們可能想問(wèn)的是示例類是否是良好封裝的示例,或者更一般地說(shuō),是良好面向?qū)ο笤O(shè)計(jì)的示例。


更新


看到示例代碼,很難說(shuō)是這樣還是那樣。做出判斷太不現(xiàn)實(shí)了。(該代碼實(shí)際上毫無(wú)用處,但除非我們知道其預(yù)期用途是什么,否則我們不能真正稱其為糟糕的設(shè)計(jì)。)


另一個(gè)答案似乎是認(rèn)為私有吸氣劑是無(wú)用的。我不同意。特別是因?yàn)?getter 除了簡(jiǎn)單地返回值之外還可以做其他事情??紤]一下:


private synchronized void setBalance(int newBalance) {

    this.balance = newBalance;

}


private synchronized int getBalance() {

    return this.balance;

}

這確保調(diào)用者將看到余額字段的當(dāng)前值,即使它剛剛被另一個(gè)線程更新。當(dāng)然我們可以通過(guò)其他方式做到這一點(diǎn),但這種方式是很好的責(zé)任分離。


還有其他私人吸氣劑可以合法做的事情。


查看完整回答
反對(duì) 回復(fù) 2023-11-10
?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

因?yàn)?,如果?getter 設(shè)置為私有,則無(wú)法訪問(wèn)另一個(gè)類中的該數(shù)據(jù)成員。我們使用 getter 來(lái)訪問(wèn)另一個(gè)類中的私有數(shù)據(jù)成員。因此,如果您將 getter 設(shè)置為私有,那么該 getter 有什么用呢?



查看完整回答
反對(duì) 回復(fù) 2023-11-10
  • 2 回答
  • 0 關(guān)注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)