乔治爱啃脚趾 发表于 2023-12-7 20:58:53

java题目

设计一个名为Tuxing的抽象父类,它有三个子类Yuan,SanJiao,JuXing。编写测试程序,分别创建10个子类对象(要求Yuan,SanJiao,JuXing类型对象都有)存入ArrayList中的10个对象按面积大小排序。

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

乔治爱啃脚趾 发表于 2023-12-7 21:15:24

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



Comparable<Tuxing>这是什么意思啊

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: java题目