Несмотря на то, что это очень простой код, кажется, что в Java есть что-то принципиально ошибочное, или JVM, используемое Eclipse IDE, которое я использовал для запуска кода.
Код работает, хотя он не должен (я думаю)! Код в A.java просто отображает "Hello, я am 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(); }
}
Я не понимаю, почему после создания экземпляра класса A main() успешно запускает закрытый метод класса А в этом экземпляре. Да, основной метод принадлежит классу A, но он не обращается к закрытому методу от внутри текущего объекта в контексте ссылки "this". Фактически, поскольку это статический метод, он не может получить доступ к нестационарным членам внутри класса. Вместо метода main() нестатический метод-член мог вызывать метод A() только из внутри. Но это еще одна проблема, поскольку я не определил какой-либо нестатический второй метод.
Теперь, когда речь идет о внутреннем просмотре, вернитесь к точке, внешний вид. Как вы можете видеть, main() пытается вызвать метод methodA из вне объекта и преуспевает! Почему частный не рассматривается как закрытый?
Я тяну свои волосы....
Кто-нибудь, ответьте...