2 回答

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

TA貢獻1796條經驗 獲得超7個贊
因為,如果將 getter 設置為私有,則無法訪問另一個類中的該數據成員。我們使用 getter 來訪問另一個類中的私有數據成員。因此,如果您將 getter 設置為私有,那么該 getter 有什么用呢?
添加回答
舉報