Я новичок в программировании и не понимаю, почему этот код печатает 200 вместо 206. Метод перемещения в классе Cat переопределяет метод перемещения в классе Animals. Почему переменная экземпляра «местоположение» в Animals не изменяется на 206 после вызова метода в строке 2? Однако, когда я удаляю метод в классе Cat, переменная экземпляра ДЕЙСТВИТЕЛЬНО изменяется на 206. Какая логика стоит за этим?
public class Animals {
int location = 200; //line 1
public void move(int by) {
location = location+by;
}
public final static void main (String...args) {
Animals a = new Cat();
a.move(6); //line 2
System.out.println(a.location); //200, but should print 206 in my opinion
}
}
class Cat extends Animals {
int location = 400;
@Override
public void move(int by) { //if this method is removed, a.location prints 206
location = location+by;
}
}