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

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

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

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

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

2 回答

?
揚(yáng)帆大魚

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

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


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


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


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


更新


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


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


private synchronized void setBalance(int newBalance) {

    this.balance = newBalance;

}


private synchronized int getBalance() {

    return this.balance;

}

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


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


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

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

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



查看完整回答
反對 回復(fù) 2023-11-10
  • 2 回答
  • 0 關(guān)注
  • 181 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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