簡體   English   中英

在Java類之外訪問私有變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM