Условие задачи: Переопредели метод setName в классе Cat так, чтобы программа выдавала на экран надпись «Я - кот». Код задачи:
public class Solution {
    public static void main(String[] args) {
        Pet pet = new Cat();
        pet.setName("Я - пушистик");

        System.out.println(pet.getName());
    }

    public static class Pet {
        protected String name;

        public Pet() {
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

    }

    public static class Cat extends Pet {

    }
}
Я переопределила метод setName в классе Cat с использованием super.name = ... В правильном решении используется this.name. Но почему? Это же класс-наследник, а мы обращаемся к полю класса-родителя