class A{
void display(){
System.out.println("hai");
}
}
class B {
static A a;
}
class C{
public static void main(String args[])
{
B.a.display();
// no compile- time error here.why?
}
}
Также я знаю, что a будет установлен на null во время выполнения.Но должен ли компилятор знать, что мы обращаемся к нестатическому методу через статическую ссылочную переменную?Это дает исключение нулевого указателя при выполнении, но почему компилятор не выдает ошибку.
Означает ли это, что статическая ссылочная переменная ведет себя точно так же, как ссылка на объект, и, таким образом, может вызывать любой метод (статический и нестатический) класса?
Редактировать: Я в основном путаю со статическойправила доступа к полю.По определению статические поля могут напрямую обращаться только к другим статическим полям.Так разве это не включает «вызов» метода, использующего статическую ссылочную переменную?И к display () обращаются до того, как его объект создан.Это действительно?