Простой вопрос, странный результат. У меня есть два класса A и B:
public class A
{
protected int num;
public A(int n)
{
num = n;
}
public boolean f(A a)
{
return num == a.num * 2;
}
}
public class B extends A
{
public B(int n)
{
super(n);
}
public boolean f(B b)
{
return num == b.num;
}
}
Почему y1.f(y2) вызывает метод f() в A вместо B?
A y1 = new B(10);
B y2 = new B(10);
System.out.println(y1.f(y2));
Не предполагается ли вызов f() в B, поскольку B более конкретный, чем A?