鱼C论坛

 找回密码
 立即注册
查看: 261|回复: 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()`用于计算面积。
  1. abstract class Tuxing implements Comparable<Tuxing> {
  2.     public abstract double getArea();
  3.     @Override
  4.     public int compareTo(Tuxing other) {
  5.         double area1 = this.getArea();
  6.         double area2 = other.getArea();
  7.         if (area1 < area2) {
  8.             return -1;
  9.         } else if (area1 > area2) {
  10.             return 1;
  11.         } else {
  12.             return 0;
  13.         }
  14.     }
  15. }
复制代码

接下来我们创建三个子类Yuan,SanJiao,JuXing,它们都继承自Tuxing父类,并重写`getArea()`方法。
  1. class Yuan extends Tuxing {
  2.     private double radius;
  3.     public Yuan(double radius) {
  4.         this.radius = radius;
  5.     }
  6.     @Override
  7.     public double getArea() {
  8.         return Math.PI * radius * radius;
  9.     }
  10. }
  11. class SanJiao extends Tuxing {
  12.     private double base;
  13.     private double height;
  14.     public SanJiao(double base, double height) {
  15.         this.base = base;
  16.         this.height = height;
  17.     }
  18.     @Override
  19.     public double getArea() {
  20.         return base * height / 2;
  21.     }
  22. }
  23. class JuXing extends Tuxing {
  24.     private double length;
  25.     private double width;
  26.     public JuXing(double length, double width) {
  27.         this.length = length;
  28.         this.width = width;
  29.     }
  30.     @Override
  31.     public double getArea() {
  32.         return length * width;
  33.     }
  34. }
复制代码

最后,我们编写测试程序,创建10个子类对象存入ArrayList中,并按面积大小进行排序。
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.List;
  4. public class Main {
  5.     public static void main(String[] args) {
  6.         List<Tuxing> list = new ArrayList<>();
  7.         // 创建10个子类对象
  8.         list.add(new Yuan(3));
  9.         list.add(new Yuan(5));
  10.         list.add(new SanJiao(4, 6));
  11.         list.add(new SanJiao(2, 8));
  12.         list.add(new JuXing(2, 4));
  13.         list.add(new JuXing(5, 7));
  14.         list.add(new Yuan(2.5));
  15.         list.add(new SanJiao(3, 9));
  16.         list.add(new JuXing(3, 6));
  17.         list.add(new JuXing(4, 5));
  18.         // 按面积大小进行排序
  19.         Collections.sort(list);
  20.         // 输出排序后的结果
  21.         for (Tuxing tuxing : list) {
  22.             System.out.println(tuxing.getArea());
  23.         }
  24.     }
  25. }
复制代码

这样,我们就完成了题目需求,创建了10个子类对象,存入ArrayList中,并按面积大小进行排序输出。

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

使用道具 举报

发表于 2023-12-7 20:59:48 | 显示全部楼层    本楼为最佳答案   
好的,我们先来创建这个名为Tuxing的抽象父类,它有一个抽象方法`getArea()`用于计算面积。
  1. abstract class Tuxing implements Comparable<Tuxing> {
  2.     public abstract double getArea();
  3.     @Override
  4.     public int compareTo(Tuxing other) {
  5.         double area1 = this.getArea();
  6.         double area2 = other.getArea();
  7.         if (area1 < area2) {
  8.             return -1;
  9.         } else if (area1 > area2) {
  10.             return 1;
  11.         } else {
  12.             return 0;
  13.         }
  14.     }
  15. }
复制代码

接下来我们创建三个子类Yuan,SanJiao,JuXing,它们都继承自Tuxing父类,并重写`getArea()`方法。
  1. class Yuan extends Tuxing {
  2.     private double radius;
  3.     public Yuan(double radius) {
  4.         this.radius = radius;
  5.     }
  6.     @Override
  7.     public double getArea() {
  8.         return Math.PI * radius * radius;
  9.     }
  10. }
  11. class SanJiao extends Tuxing {
  12.     private double base;
  13.     private double height;
  14.     public SanJiao(double base, double height) {
  15.         this.base = base;
  16.         this.height = height;
  17.     }
  18.     @Override
  19.     public double getArea() {
  20.         return base * height / 2;
  21.     }
  22. }
  23. class JuXing extends Tuxing {
  24.     private double length;
  25.     private double width;
  26.     public JuXing(double length, double width) {
  27.         this.length = length;
  28.         this.width = width;
  29.     }
  30.     @Override
  31.     public double getArea() {
  32.         return length * width;
  33.     }
  34. }
复制代码

最后,我们编写测试程序,创建10个子类对象存入ArrayList中,并按面积大小进行排序。
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.List;
  4. public class Main {
  5.     public static void main(String[] args) {
  6.         List<Tuxing> list = new ArrayList<>();
  7.         // 创建10个子类对象
  8.         list.add(new Yuan(3));
  9.         list.add(new Yuan(5));
  10.         list.add(new SanJiao(4, 6));
  11.         list.add(new SanJiao(2, 8));
  12.         list.add(new JuXing(2, 4));
  13.         list.add(new JuXing(5, 7));
  14.         list.add(new Yuan(2.5));
  15.         list.add(new SanJiao(3, 9));
  16.         list.add(new JuXing(3, 6));
  17.         list.add(new JuXing(4, 5));
  18.         // 按面积大小进行排序
  19.         Collections.sort(list);
  20.         // 输出排序后的结果
  21.         for (Tuxing tuxing : list) {
  22.             System.out.println(tuxing.getArea());
  23.         }
  24.     }
  25. }
复制代码

这样,我们就完成了题目需求,创建了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-4-28 02:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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