Question: public class MM{ public static void main(String[] args) { B b; b = new C(); E e; e = new G(); e.f(b); } } class
public class MM{ public static void main(String[] args) { B b; b = new C(); E e; e = new G(); e.f(b); } }
class D { public void f(A x) { System.out.println(0); } } class E extends D { public void f(C x) { System.out.println(1); } } class F extends E { public void f(A x) { System.out.println(2); } } class G extends F { public void f(A x) { System.out.println(-2); } public void f(B x) { System.out.println(4); } public void f(C x) { System.out.println(5); } }
class A {
} class B extends A {
} class C extends B {
}
Why the output is -2, but if we change
B b;
to
C b;
the output is 5?
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
