java题目
设计一个名为Tuxing的抽象父类,它有三个子类Yuan,SanJiao,JuXing。编写测试程序,分别创建10个子类对象(要求Yuan,SanJiao,JuXing类型对象都有)存入ArrayList中的10个对象按面积大小排序。 好的,我们先来创建这个名为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 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2023-12-7 20:59
好的,我们先来创建这个名为Tuxing的抽象父类,它有一个抽象方法`getArea()`用于计算面积。
Comparable<Tuxing>这是什么意思啊
乔治爱啃脚趾 发表于 2023-12-07 21:15
Comparable这是什么意思啊
`Comparable`是Java中的一个接口,它定义了对象之间的比较规则。实现了`Comparable`接口的类可以使用`compareTo()`方法来进行比较。该方法返回一个整数值,表示当前对象与另一个对象的大小关系。
具体来说,在我们的题目中,我们希望按照子类对象的面积大小进行排序。为了实现这个功能,我们需要让子类实现`Comparable`接口,并重写`compareTo()`方法。在`compareTo()`方法中,我们根据面积大小来判断两个对象的大小关系,从而实现排序。
比较方法的返回值有以下三种情况:
- 如果当前对象的面积小于另一个对象的面积,返回一个负数(例如-1);
- 如果当前对象的面积大于另一个对象的面积,返回一个正数(例如1);
- 如果两个对象的面积相等,返回0。
通过实现`Comparable`接口,我们可以使用Java提供的排序方法(比如`Collections.sort()`)对对象进行排序,而无需额外的比较器。
希望这样解释能够帮助您理解`Comparable`的含义和作用。如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]