1Z0-803 · Question #266
Given: abstract class A1 { public abstract void m1(); public void m2() { System.out.println("Green"); } } abstract class A2 extends A1 { public abstract void m3(); public void m1() { System.out.printl
The correct answer is A. Yellow. This question tests Java's runtime polymorphism and method overriding, specifically how a method call is resolved when an object is referenced by a superclass type.
Question
Given:
abstract class A1 { public abstract void m1(); public void m2() { System.out.println("Green"); } } abstract class A2 extends A1 { public abstract void m3(); public void m1() { System.out.println("Cyan"); } public void m2() { System.out.println("Blue"); } } public class A3 extends A2 { public void m1() { System.out.println("Yellow"); } public void m2() { System.out.println("Pink"); } public void m3() { System.out.println("Red"); } public static void main(String[] args) { A2 tp = new A3(); tp.m1(); tp.m2(); tp.m3(); } } What is the result?
Options
- AYellow
- BCyan
- CCyan
- DCompilation Fails
How the community answered
(59 responses)- A64% (38)
- B12% (7)
- C5% (3)
- D19% (11)
Why each option
This question tests Java's runtime polymorphism and method overriding, specifically how a method call is resolved when an object is referenced by a superclass type.
When `A2 tp = new A3();` is executed, an `A3` object is created and assigned to an `A2` reference. When `tp.m1()` is called, Java's runtime polymorphism ensures that the `m1()` implementation in the actual object's class (`A3`) is invoked, which prints 'Yellow'.
The `m1()` method in `A2` (which prints 'Cyan') is overridden by `A3`. Due to runtime polymorphism, the `A3` version takes precedence when called on an `A3` object.
The `m1()` method in `A2` (which prints 'Cyan') is overridden by `A3`. Due to runtime polymorphism, the `A3` version takes precedence when called on an `A3` object.
The code is syntactically correct and adheres to Java's rules for inheritance and polymorphism, thus it will compile successfully without any errors.
Concept tested: Java runtime polymorphism and method overriding
Source: https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html
Topics
Community Discussion
No community discussion yet for this question.