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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!