雖然這是一個非常基本的代碼,但它似乎在Java中存在根本性的缺陷,或者是我用來運行代碼的Eclipse IDE使用的JVM。爲什麼可以從不同的實例訪問「私有」方法?
該代碼運行,即使它不應該(我認爲)! A.java中的代碼只顯示「你好,我是A!」
這就是:
import java.lang.*;
import java.util.*;
class A {
private void methodA() {System.out.println("Hello, I am A!");}
public static void main(String[] args) {
A a = new A();
a.methodA(); }
}
我不明白爲什麼,創建一個類的實例後,main()的運行A級在該實例的私有方法成功。是的,主要方法屬於A類,但它不訪問在「this」參考的上下文中當前對象內部的私有方法。實際上,由於它是一個靜態方法,因此它不能從類內部訪問非靜態成員。不是main(),非靜態成員方法只能從中調用methodA(),而在之內。但這是另一個問題,因爲我沒有定義任何非靜態的第二種方法。
現在內視在談到,讓我們回過頭來來看,外視。如您所見,main()嘗試從以外的對象調用methodA併成功!爲什麼不是私人被視爲私人?
我拉我的頭髮....
任何人,請回復......
你是什麼意思的「對象外」? – Maroun