Wymagane jest objaśnienie wyjścia fragmentu kodu Java

Mój kod to:

class Foo {
  public int a=3;
  public void addFive() {
    a+=5;
    System.out.print("f ");
  }
}

class Bar extends Foo {
  public int a=8;
  public void addFive() {
    this.a += 5;
    System.out.print("b ");
  }
}

public class TestClass {
  public static void main(String[]args) {
    Foo f = new Bar();
    f.addFive();
    System.out.println(f.a);
  }
}

Wydajność:

b 3

Proszę mi wyjaśnić, dlaczego wyjście dla tego pytania „b 3”, a nie „b 13”, ponieważ metoda została zastąpiona?

questionAnswers(4)

yourAnswerToTheQuestion