鱼C论坛

 找回密码
 立即注册
查看: 537|回复: 3

[已解决]java题目

[复制链接]
发表于 2023-12-7 20:58:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
设计一个名为Tuxing的抽象父类,它有三个子类Yuan,SanJiao,JuXing。编写测试程序,分别创建10个子类对象(要求Yuan,SanJiao,JuXing类型对象都有)存入ArrayList中的10个对象按面积大小排序。
最佳答案
2023-12-7 20:59:48
好的,我们先来创建这个名为Tuxing的抽象父类,它有一个抽象方法`getArea()`用于计算面积。
abstract class Tuxing implements Comparable<Tuxing> {    public abstract double getArea();    @Override    public int compareTo(Tuxing other) {        double area1 = this.getArea();        double area2 = other.getArea();        if (area1 < area2) {            return -1;        } else if (area1 > area2) {            return 1;        } else {            return 0;        }    }}
接下来我们创建三个子类Yuan,SanJiao,JuXing,它们都继承自Tuxing父类,并重写`getArea()`方法。
class Yuan extends Tuxing {    private double radius;    public Yuan(double radius) {        this.radius = radius;    }    @Override    public double getArea() {        return Math.PI * radius * radius;    }}class SanJiao extends Tuxing {    private double base;    private double height;    public SanJiao(double base, double height) {        this.base = base;        this.height = height;    }    @Override    public double getArea() {        return base * height / 2;    }}class JuXing extends Tuxing {    private double length;    private double width;    public JuXing(double length, double width) {        this.length = length;        this.width = width;    }    @Override    public double getArea() {        return length * width;    }}
最后,我们编写测试程序,创建10个子类对象存入ArrayList中,并按面积大小进行排序。
import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Main {    public static void main(String[] args) {        List<Tuxing> list = new ArrayList<>();        // 创建10个子类对象        list.add(new Yuan(3));        list.add(new Yuan(5));        list.add(new SanJiao(4, 6));        list.add(new SanJiao(2, 8));        list.add(new JuXing(2, 4));        list.add(new JuXing(5, 7));        list.add(new Yuan(2.5));        list.add(new SanJiao(3, 9));        list.add(new JuXing(3, 6));        list.add(new JuXing(4, 5));        // 按面积大小进行排序        Collections.sort(list);        // 输出排序后的结果        for (Tuxing tuxing : list) {            System.out.println(tuxing.getArea());        }    }}
这样,我们就完成了题目需求,创建了10个子类对象,存入ArrayList中,并按面积大小进行排序输出。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-7 20:59:48 | 显示全部楼层    本楼为最佳答案   
好的,我们先来创建这个名为Tuxing的抽象父类,它有一个抽象方法`getArea()`用于计算面积。
abstract class Tuxing implements Comparable<Tuxing> {    public abstract double getArea();    @Override    public int compareTo(Tuxing other) {        double area1 = this.getArea();        double area2 = other.getArea();        if (area1 < area2) {            return -1;        } else if (area1 > area2) {            return 1;        } else {            return 0;        }    }}
接下来我们创建三个子类Yuan,SanJiao,JuXing,它们都继承自Tuxing父类,并重写`getArea()`方法。
class Yuan extends Tuxing {    private double radius;    public Yuan(double radius) {        this.radius = radius;    }    @Override    public double getArea() {        return Math.PI * radius * radius;    }}class SanJiao extends Tuxing {    private double base;    private double height;    public SanJiao(double base, double height) {        this.base = base;        this.height = height;    }    @Override    public double getArea() {        return base * height / 2;    }}class JuXing extends Tuxing {    private double length;    private double width;    public JuXing(double length, double width) {        this.length = length;        this.width = width;    }    @Override    public double getArea() {        return length * width;    }}
最后,我们编写测试程序,创建10个子类对象存入ArrayList中,并按面积大小进行排序。
import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Main {    public static void main(String[] args) {        List<Tuxing> list = new ArrayList<>();        // 创建10个子类对象        list.add(new Yuan(3));        list.add(new Yuan(5));        list.add(new SanJiao(4, 6));        list.add(new SanJiao(2, 8));        list.add(new JuXing(2, 4));        list.add(new JuXing(5, 7));        list.add(new Yuan(2.5));        list.add(new SanJiao(3, 9));        list.add(new JuXing(3, 6));        list.add(new JuXing(4, 5));        // 按面积大小进行排序        Collections.sort(list);        // 输出排序后的结果        for (Tuxing tuxing : list) {            System.out.println(tuxing.getArea());        }    }}
这样,我们就完成了题目需求,创建了10个子类对象,存入ArrayList中,并按面积大小进行排序输出。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-7 21:15:24 | 显示全部楼层
FishC 发表于 2023-12-7 20:59
好的,我们先来创建这个名为Tuxing的抽象父类,它有一个抽象方法`getArea()`用于计算面积。

Comparable<Tuxing>这是什么意思啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-7 21:16:00 | 显示全部楼层
乔治爱啃脚趾 发表于 2023-12-07 21:15
Comparable这是什么意思啊

`Comparable`是Java中的一个接口,它定义了对象之间的比较规则。实现了`Comparable`接口的类可以使用`compareTo()`方法来进行比较。该方法返回一个整数值,表示当前对象与另一个对象的大小关系。

具体来说,在我们的题目中,我们希望按照子类对象的面积大小进行排序。为了实现这个功能,我们需要让子类实现`Comparable`接口,并重写`compareTo()`方法。在`compareTo()`方法中,我们根据面积大小来判断两个对象的大小关系,从而实现排序。

比较方法的返回值有以下三种情况:
- 如果当前对象的面积小于另一个对象的面积,返回一个负数(例如-1);
- 如果当前对象的面积大于另一个对象的面积,返回一个正数(例如1);
- 如果两个对象的面积相等,返回0。

通过实现`Comparable`接口,我们可以使用Java提供的排序方法(比如`Collections.sort()`)对对象进行排序,而无需额外的比较器。

希望这样解释能够帮助您理解`Comparable`的含义和作用。如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-4 01:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表