Например, у меня есть следующий код.
class Circle {
double radius;
public boolean equals(Object circle) {
return this.radius ==((Circle)circle).radius;
}
}
и драйвер
public class Driver {
public static void main(String[] args) {
Object circle1 = new Circle();
Circle circle2 = new Circle();
System.out.println(circle1.equals(circle2));
}
}
Он печатает True, но если я переписываю Circle.equals () как
public boolean equals(Circle circle) {
return this.radius ==((Circle)circle).radius;
}
где метод .equals () принимает тип Circle, система выводит False.
Я знаю, что класс Circle является подклассом класса Object, поэтому компилятор не сообщает об ошибке, и во время выполнения JVM выбирает правильный метод переопределения для реализации правильного поведения.
Если я изменю код как нижний, где .equals () принимает объекты класса Circle, Code может быть реализован правильно, пожалуйста, скажите мне, почему. Заранее спасибо.