Видимость полей для методов

Видимость полей для методов

Видимость полей для методов определяется на стадии компиляции в зависимости от того, в каком классе метод определён.


class Base {
    String var = "Base";

    void first() {
        System.out.println("first: "+ second());
    }
    String second() {
        return var;
    }
}
class Child extends Base {
    String var = "Child";
    
    public static void main(String[] args) {
        Base b = new Base();
        Child c = new Child();
        
        b.first();
        c.first();
    }
}
В обоих случаях выведется 'first: Base', т. к. метод second() вызывается из класса Base.
Чтобы в классе Child вывести 'Child', необходимо в нём переопределить метод second():


class Child extends Base {
    String var = "Child";

    @Override
    String second() {
        return var;
    }


Child c = new Child();
c.first(); // first: Child
Наследование