Given:
11. class Alpha {
12. public void foo() { System.out.print(“Afoo “); }
13. }
14. public class Beta extends Alpha {
15. public void foo() { System.out.print(“Bfoo “); }
16. public static void main(String[] args) {
17. Alpha a = new Beta();
18. Beta b = (Beta)a;
19. a.foo();
20. b.foo();
21. }
22. }
What is the result?
A.
Afoo Afoo
B.
Afoo Bfoo
C.
Bfoo Afoo
D.
Bfoo Bfoo
E.
Compilation fails.
F.
An exception is thrown at runtime.
D is correct, in runtime jvm just see the object and call its method. In run time a and b are object of class Beta.