Question

    What will be the output of the following Java snippet?

    class A {     public void display() {         System.out.println("Class A");     }} class B extends A {     public void display() {         System.out.println("Class B");     }} public class Test {     public static void main(String[] args) {         A obj = new B();         obj.display();     }}
    A Class A Correct Answer Incorrect Answer
    B Class B Correct Answer Incorrect Answer
    C Compilation Error Correct Answer Incorrect Answer
    D Runtime Error Correct Answer Incorrect Answer
    E None of the above Correct Answer Incorrect Answer

    Solution

    This program demonstrates runtime polymorphism in Java through method overriding. When the method display() is called on the object obj, the overridden method in class B is executed. This is because obj is instantiated as new B(), and at runtime, the JVM determines the appropriate method to execute based on the actual type of the object. Thus, even though obj is declared as type A, the overridden display() method in B is executed, producing the output "Class B" . This behavior is a key feature of Java's dynamic method dispatch mechanism. Explanation of Incorrect Options: A) Class A : This would be true if the display() method in class B was not overridden. However, since B overrides A's method, this option is incorrect. C) Compilation Error : The code is syntactically correct, so it compiles without any issues. D) Runtime Error : The program runs successfully, as all method calls are valid and properly resolved at runtime. E) None of the above : This is incorrect, as the correct output is explicitly "Class B" .

    Practice Next