Creating References Using Inheritance Hierarchies

AP Computer Science A· difficulty 4/5

public class A { public String show(A o) { return "A-A"; } }
public class B extends A {
    public String show(A o) { return "B-A"; }
    public String show(B o) { return "B-B"; }
}
A x = new B();
A y = new B();
System.out.println(x.show(y));

What is printed?

  • A

    B-A

    check_circle
  • B

    Compile-time error

  • C

    A-A

  • D

    B-B

Explanation

Method overload selection uses compile-time types of arguments. y is declared A, so show(A) is selected; runtime dispatch picks B.show(A), returning "B-A".

Want 10 more like this — adaptive to your weak spots?

Related questions