166k views
2 votes
Analyze the following code.// Program 1:public class Test {public static void main(String[] args) {Object circle1 = new Circle();Object circle2 = new Circle();System.out.println(circle1.equals(circle2));}}class Circle {double radius;public boolean equals(Circle circle) {return this.radius == circle.radius;}}// Program 2:public class Test {public static void main(String[] args) {Object circle1 = new Circle();Object circle2 = new Circle();System.out.println(circle1.equals(circle2));}}class Circle {double radius;public boolean equals(Object circle) {return this.radius ==((Circle)circle).radius;}}Question 10 options:A) Program 1 displays true and Program 2 displays trueB) Program 1 displays false and Program 2 displays trueC) Program 1 displays true and Program 2 displays falseD) Program 1 displays false and Program 2 displays false

1 Answer

6 votes

Answer:

B) Program 1 Displays false and Program 2 Displays true

Step-by-step explanation:

equals method is defined in Object class and every class is by default extends Object class.

In order to use equals method of object class, subclass must extends equals method of Object class.

Equals method always take Object class reference as a parameter.

So in Program one, equals method's parameter is of type Circle which means Our subclass did't override the equals method of Object class, and default equals method of object class compares the memory addresses that's why program 1 returned false.

In program 2, equals method is properly override the Object class equals method. That's why when we try to call equals method, it basically executed subclass equals method and that's why it returned true as double default value is 0.0;

User Smdvlpr
by
7.8k points