提示:关于comparable接口,重写compareTo,调用sort排序
问题
(继承与多态)设计一个Shape类,该类无数据成员,函数成员:getArea()、getPerimeter()分别获得图形的面积(0)、周长(0),由此派生Circle类、Rectangle类并重写上述2个方法。然后设计实现GeoArrayList有序图形列表类(升序)数据成员自定(可以使用ArrayList<>),该类可以实现以ArryLsit为参数的构造方法及无参构造方法,向GeoArrayList添加对象方法insertGeoShape(Shape)(要求加入后不影响原有升序关系)、reMove(Sahpe)方法删除图形对象、getIndex(Shape)得到对象在列表的位置、get(index)读指定位置的对象、Size()返回列表长度、Clear()清空列表、Contains(Shape)判断图形是否在列表中、displayGeoList()依次显示列表中的所有对象的面积及对象的类别名称,GeoArrayList列表的升序以面积大小判断。设计主类:定义2个数组一个圆数组、一个矩形数组,然后将这两个数组添加到一个GeoArrayList对象中,然后显示列表中的所有对象
提示:以下是本篇文章正文内容。
一、设计类
- 父类Shape 继承了Comparable接口的虚函数
package shapes;
public abstract class Shape implements Comparable<Shape> {
public double getArea() {
return 0;
}
public double getPerimeter() {
return 0;
}
public String display() {
return getArea() + " Shape";
}
@Override
public int compareTo(Shape o) {
if (this.getArea() > o.getArea())
return 1;
else if (this.getArea() < o.getArea())
return -1;
else
return 0;
}
}
2.circle类,继承了Shape的相关函数并按需求重写了一遍
package shapes;
public class circle extends Shape {
private double radius;
public circle(double x) {
this.