pta-java-6-3 可比较的几何类(抽象类与接口)

通过继承和多态的学习,同学们熟悉了GeometricObject类,现在用抽象类的观点,修改GeometricObject类以实现Comparable接口,且在GeometricObject类中定义一个静态方法:求两个GeometricObject对象中较大者。

此题提交时将会附加下述代码到被提交的Java程序末尾。

裁判测试程序样例:

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        Circle circle1 = new Circle(input.nextInt());
        Circle circle2 = new Circle(input.nextInt());

        Circle circle = (Circle) GeometricObject.max(circle1, circle2);
        System.out.println("The max circle's radius is " + circle.getRadius());
        System.out.println(circle);
    }
}

/* 请在这里填写答案 */

输入样例:

在这里给出一组输入。例如:

4 10

输出样例:

在这里给出相应的输出。例如:

The max circle's radius is 10.0
Circle radius = 10.0

正确答案:

//抽象类 GeometricObject,实现 Comparable 接口
abstract class GeometricObject implements Comparable<GeometricObject> {

    // 抽象方法,用于子类实现
    public abstract double getArea();

    // 实现 Comparable 接口的 compareTo 方法,比较面积
    @Override
    public int compareTo(GeometricObject o) {
        if (this.getArea() > o.getArea()) {
            return 1;
        } else if (this.getArea() < o.getArea()) {
            return -1;
        } else {
            return 0;
        }
    }

    // 静态方法,用于返回较大的 GeometricObject 对象
    public static GeometricObject max(GeometricObject o1, GeometricObject o2) {
        return (o1.compareTo(o2) >= 0) ? o1 : o2;
    }
}

// Circle 类,继承自 GeometricObject
class Circle extends GeometricObject {
    private double radius;

    // 构造函数
    public Circle(double radius) {
        this.radius = radius;
    }

    // 获取圆的面积
    @Override
    public double getArea() {
        return Math.PI * radius * radius;
    }

    // 获取圆的半径
    public double getRadius() {
        return radius;
    }

    // 重写 toString 方法
    @Override
    public String toString() {
        return "Circle radius = " + radius;
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值