What is the result?

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?

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.



Leave a Reply 1

Your email address will not be published. Required fields are marked *


Matti

Matti

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.