Требуется объяснение вывода фрагмента кода Java

Мой код:

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);
  }
}

Выход:

b 3

Пожалуйста, объясните мне, почему вывод для этого вопроса «b 3», а не «b 13», так как метод был переопределен?

17
задан Bill the Lizard 15 August 2012 в 20:00
поделиться