[英]Accessing private variable outside its class in java
以下Java程序成功編譯。 我期待語句y.className = "No class name.";
因為私有變量className是在其類外部訪問的。
class t {
public static void main(String[] r) {
Y y = new Y();
y.className = "No class name.";
y.echoClassName();
}
static class Y {
private String className = "Class Name is Y.";
public void echoClassName() {
System.out.println(className);
}
}
}
為什么沒有顯示錯誤?
私有變量的范圍是將其包含在其中的整個頂級類,在您的情況下為t
。 參見例如JLS#6.6.1 (強調我的):
否則,成員或構造函數將被聲明為私有,並且僅當且僅當它出現在封裝成員或構造函數的聲明的頂級類 (第7.6節) 的主體內時,才允許訪問。
Y是一個嵌套類。 這意味着它嵌入在t類中,在其中運行main。 它僅在其類中可見,但是如果您在類中嵌套一個具有私有變量的類,則可以在該類中訪問此變量。
如果將Y類放在另一個文件中並在t中創建它,則將出現可見性錯誤。 由於您使用的是嵌套類,因此一切正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.