[英]Why Can I Access Private Variable From Outside Class?
我的任務是找出如何查看但不編輯來自另一個 class 的私有 int。 我嘗試了一些過於復雜的事情,但有效的是:
public int getC() {
return myC;
}
myC 是一個私有整數。 讓另一個 class 訪問私有變量真的這么容易嗎? 我以為他們不能分享。 有人可以解釋為什么允許這樣做嗎? 謝謝。
您創建了一個公共getter function 來訪問私有變量。 因此,如果另一個 class 將您的 class 的實例作為其局部變量,它可以使用公共函數(getter)來訪問原始 class 的私有變量。
公開私有字段的唯一方法是通過accessors
又名getters
。
但是你應該遵循兩條規則:
避免通過 getter(ide 快捷方式)直接公開所有私有字段的誘惑。 僅在確實需要時添加它們。
如果您公開的類型不是不可變的,請注意不要通過返回防御性副本來escape references
示例:
private Date date;
public Date date() {
return date;
}
這段代碼破壞了封裝,它和這樣做是一樣的。
public Date date;
要解決這個問題,您有 2 個解決方案
public Date date() {
return new Date(date.getTime());
}
LocalDate
相同的邏輯適用於集合類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.