创建名为ComparableCircle的类,它继承自Circle类,并实现Comparable接口。实现compareTo方法,使其根据面积比较两个圆。编写一个测试程序求出ComparableCircle对象的两个实例中的较大者。
代码如下:
import java.util.Date;
import java.util.Scanner;
abstract class GeometricObject{
private String color = "white";
private boolean filled;
private Date dateCreated;
protected GeometricObject(){
dateCreated = new Date();
}
protected GeometricObject(String color,boolean filled){
dateCreated = new Date();
this.color = color;
this.filled = filled;
}
public String getColor(){
return color;
}
public void setColor(String color){
this.color = color;
}
public boolean isFilled(){
return filled;
}
public void setFilled(boolean filled){
this.filled = filled;
}
public Date getDateCreated(){
return dateCreated;
}
@Override
public String toString(){
return "created on " + dateCreated + "\ncolor: " + color + " and filled: " + filled;
}
public abstract double getArea();
public abstract double getPerimeter();
}
class Circle extends GeometricObject{
private double radius;
public Circle(){
}
public Circle(double radius){
this.radius = radius;
}
public Circle(String color,boolean filled,double radius){
super(color,filled);
this.radius = radius;
}
public double getRadius(){
return radius;
}
public void setRadius(double radius){
this.radius = radius;
}
public double getArea(){
return radius * radius * Math.PI;
}
public double getPerimeter(){
return 2 * radius * Math.PI;
}
public void printCircle(){
System.out.println("The circle is created " + getDateCreated() + " and the radius is " + radius);
}
}
public class ComparableCircle extends Circle
implements Comparable<ComparableCircle>{
public ComparableCircle(){
}
public ComparableCircle(double radius){
super(radius);
}
public int compareTo(ComparableCircle o){
if(getArea() > o.getArea())
return 1;
else if(getArea() < o.getArea())
return -1;
else
return 0;
}
@Override
public String toString(){
return super.toString() + " Area: " + getArea();
}
public void comparativeResult(int compare){
if(compare==1){
System.out.println("大于");
}
else if(compare==-1){
System.out.println("小于");
}
else if(compare==0){
System.out.println("等于");
}
}
public static void main(String[] args) {
System.out.println("请输入第一个圆的半径:");
Scanner input = new Scanner(System.in);
ComparableCircle circle1 = new ComparableCircle(input.nextDouble());
System.out.println("请输入第二个圆的半径:");
ComparableCircle circle2 = new ComparableCircle(input.nextDouble());
System.out.print("两圆比较结果为:");
circle1.comparativeResult(circle1.compareTo(circle2));
}
}
运行结果: