A. Program 1 displays true and Program 2 displays true B. Program 1 displays false and Program 2 displays true C. Program 1 displays true and Program 2 displays false D. Program 1 displays false and Program 2 displays false

Analyze the following code.
// Program 1:
public class Test {
  public static void main(String[] args) {
    Object a1 = new A();
    Object a2 = new A();
    System.out.println(a1.equals(a2));
  }
}
class A {
  int x;
  public boolean equals(Object a) {
    return this.x == ((A)a).x;
  }
}

// Program 2:
public class Test {
  public static void main(String[] args) {
    Object a1 = new A();
    Object a2 = new A();
    System.out.println(a1.equals(a2));
  }
}
class A {
  int x;
  public boolean equals(A a) {
    return this.x == a.x;
  }
}


A. Program 1 displays true and Program 2 displays true
B. Program 1 displays false and Program 2 displays true
C. Program 1 displays true and Program 2 displays false
D. Program 1 displays false and Program 2 displays false

The correct answer is C

Explanation: In Program 1, the equals method in the Object class is overridden. a1.equals(a2) invokes this method. It returns true. In Program 2, the equals method in the Object class is not overridden. a1.equals(a2) invokes the equals method defined in the Object class, which returns false in this case.


Java

Learn More Multiple Choice Question :