consider the following code:
public class A{ private int num; public A(int n){ num = n; } public int getNum(){ return num; } 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 getNum() == b.getNum(); } } public class Main { public static void main(String[] args){ A y1 = new B(10); B y2 = new B(10); System.out.println("y1.f(y2) is: "+y1.f(y2)); } } What I don't understand is why the method f is running for class A (and printing false) and not B, cause in run time y1 is of type B, and should go down to method f in class B?
Cobject? I'm guessing it's another subclass of A, but it's not shown anywhere.z1andz2aren't used anywhere, they're irrelevant (and should be removed from the question).