将 Circle 类改成可比较的)改写程序清单 13-2(参见教材 P426) 中的 Circle 类,它继承自 GeometricObject 类并实现 Comparable 接口。覆盖 Object 类中的equals 方法。当两个Circle 对象半径相等时,则这两个 Circle 对象是相同的。
时间: 2023-06-17 18:02:34 浏览: 314
下面是改写后的 Circle 类代码:
```
public class Circle extends GeometricObject implements Comparable<Circle> {
private double radius;
public Circle() {
}
public Circle(double radius) {
this.radius = radius;
}
public Circle(double radius, String color, boolean filled) {
this.radius = radius;
setColor(color);
setFilled(filled);
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double getArea() {
return radius * radius * Math.PI;
}
public double getDiameter() {
return 2 * radius;
}
public double getPerimeter() {
return 2 * radius * Math.PI;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Circle) {
Circle other = (Circle) obj;
return Double.compare(radius, other.radius) == 0;
}
return false;
}
@Override
public int compareTo(Circle o) {
return Double.compare(radius, o.radius);
}
}
```
我们覆盖了 Object 类中的 equals 方法,当两个 Circle 对象的半径相等时,它们被视为相等的。我们还实现了 Comparable 接口,使得我们可以通过比较 Circle 对象的半径来排序它们。
阅读全文