import java.util.*;
public class A { public String f() { return "A"; } }
public class B extends A { public String f() { return "B"; } }
List<A> list = new ArrayList<>();
list.add(new B());
A x = list.get(0);
System.out.println(x.f());What is printed?
- Acheck_circle
B
- B
AB
- C
Compile-time error
- D
A
Explanation
Stored as B, accessed via A reference; dynamic dispatch picks B.f.