2 回答

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é)任分離。
還有其他私人吸氣劑可以合法做的事情。

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
因?yàn)?,如果?getter 設(shè)置為私有,則無法訪問另一個(gè)類中的該數(shù)據(jù)成員。我們使用 getter 來訪問另一個(gè)類中的私有數(shù)據(jù)成員。因此,如果您將 getter 設(shè)置為私有,那么該 getter 有什么用呢?
添加回答
舉報(bào)