Java 同一個類的不同實例對象竟然可以相互訪問各自的private成員


  如題,在看String源碼的某個函數時,發現了這個操作是被允許的,而且可以直接改變private字段(不是final按理是可以改變),這與之前的理解有點相背。

  接下來試圖整理下Google來的結論:

  Java: Why can I access private fields of other objects?

  抽象點的觀點:

  因為訪問修飾符在類級別而不是在對象級別上工作。

  比較有說服力的觀點:

諸如equals,clone和復制構造函數之類的一些方法在不放棄封裝的情況下編寫起來會很棘手。

  其它文章的觀點:

So encapsulation doesn't mean being closed to all of the rest of the world. It means being selective about whom you want to be open to.

所以封裝並不意味着對世界其他所有都封閉,而是意味着選擇你想要對誰開放。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM