2014-07-11 17 views
-4

這是我a.java文件,該文件編譯:私人訪問修飾符在一個程序中導致錯誤,但在另一個程序中不會導致錯誤?

class a{ 
    static int k=2;  
    private static void main(String arg[]){ 
     System.out.println(k); 
    } 
} 

main功能從外部調用(私人會員可以僅有B本地訪問)。

下面的代碼給了我一個編譯錯誤:

class A{ 
    private int data=40; 
    private void msg(){System.out.println("Hello java");} 
} 

public class Simple{ 
    public static void main(String args[]){ 
     A obj=new A(); 
     System.out.println(obj.data);//Compile Time Error 
     obj.msg();//Compile Time Error 
    } 
} 

如果訪問修飾符是在編譯時確定的,那麼爲什麼碼1力給我一個編譯時錯誤?

+1

你的問題還不清楚 - 你沒有給出足夠的代碼,* *在第一個例子中沒有用於我們知道問題是什麼。您還沒有在第二種情況下指定編譯錯誤。請閱讀http://tinyurl.com/so-list –

+0

你得到的編譯錯誤是什麼? –

+0

親愛的@virendra,第一類編譯是因爲jvm從不叫私人成員,但在第二類中,你正在調用私人成員。 – LMK

回答

1

示例1中的代碼是正確的,因爲該代碼中沒有從外部調用該方法。在示例2中,實際上是從外部調用私有方法msg,這是不允許的。訪問data也是私有的。

我想知道例1是否會運行,但我懷疑它。

2

這是因爲你已經宣佈varaible data和方法msg私人在A類。那些是A類中訪問only.You無法訪問那些Simple類。
要訪問變量data和方法msgclass A,您需要聲明它爲publicdefault
同樣,頭等a編譯,因爲你沒有訪問任何類的私有變量或方法。

相關問題