Рассмотрим следующий недопустимый код: -
class WrongCode{
int i;
static int i;
}
Здесь компилятор говорит, что у нас есть дубликаты полей в одном классе.
Теперь рассмотрим следующие классы в одном файле.
class Parent{
int i = 10;
}
class Child extends Parent{
static int i = 100;
}
public class Main{
public static void main(String ... aaa){
Parent ob = new Child();
System.out.println(ob.i); // This prints Parent's i
}
}
Так как фактический объект - Child, не должен ли ob обращаться к Child's i?И если он ссылается на «i» Родителя, то в некотором смысле он также имеет «i» Родителя в своем собственном классе вместе со своим собственным статическим «i», которое НЕ РАЗРЕШЕНО.
Дочерняя статика i затмевает Parent i.И Parent's i не является статичным, так как же тогда к нему напрямую обращаться с помощью instance, а не className?