2 回答
TA貢獻1799條經(jīng)驗 獲得超9個贊
私有 getter 方法不違反封裝性。那只是無稽之談。
我在這里不發(fā)表意見。事實上,Java 私有方法只能在聲明它的類中調(diào)用。那是在封裝的邊界內(nèi)。
要么您誤讀了 OCP 示例問題和答案,要么他們犯了錯誤。
現(xiàn)在,他們可能想問的是示例類是否是良好封裝的示例,或者更一般地說,是良好面向?qū)ο笤O(shè)計的示例。
更新
看到示例代碼,很難說是這樣還是那樣。做出判斷太不現(xiàn)實了。(該代碼實際上毫無用處,但除非我們知道其預(yù)期用途是什么,否則我們不能真正稱其為糟糕的設(shè)計。)
另一個答案似乎是認為私有吸氣劑是無用的。我不同意。特別是因為 getter 除了簡單地返回值之外還可以做其他事情。考慮一下:
private synchronized void setBalance(int newBalance) {
this.balance = newBalance;
}
private synchronized int getBalance() {
return this.balance;
}
這確保調(diào)用者將看到余額字段的當前值,即使它剛剛被另一個線程更新。當然我們可以通過其他方式做到這一點,但這種方式是很好的責(zé)任分離。
還有其他私人吸氣劑可以合法做的事情。
TA貢獻1796條經(jīng)驗 獲得超7個贊
因為,如果將 getter 設(shè)置為私有,則無法訪問另一個類中的該數(shù)據(jù)成員。我們使用 getter 來訪問另一個類中的私有數(shù)據(jù)成員。因此,如果您將 getter 設(shè)置為私有,那么該 getter 有什么用呢?
添加回答
舉報
