设计一个形状Shape抽象类和它的两个实现类:圆Circle和矩形Rectangle,实现各自构造方法、 area()方法计算图形的面积。让Rectangle类实现Comparable接口,能根据面积进行排序。
并编写相应测试类
Circle类:定义一个double类型的字段r,代表圆的半径;
Rectangle类:定义两个double类型的字段width和height,分别代表矩形的宽和高;
注意:Rectangle类,使其实现java.lang.Comparable接口,compareTo方法根据面积进行比较大小
我写
//shape类
public abstract class Shape {
abstract Double area();
}
//Circle类
public class Circle extends Shape{
private Double r;
public Circle(Double radus) {
this.r=radus;
}
@Override
Double area() {
return 3.14*this.r*this.r;
}
}
//Rectangle 类
public class Rectangle extends Shape implements Comparable<Rectangle>{
private Double width;
private Double height;
public Rectangle(Double w,Double h) {
this.height=h;
this.width=w;
}
@Override
public Double area() {
return this.height*this.width;
}
@Override
public int compareTo(Rectangle o) {
if(this.area()>o.area())
return 1;
else
return 0;
}
}
public class TestClass {
public static void main(String[] args) {
Circle c=new Circle(3.0);
System.out.println(c.area());
Rectangle r1=new Rectangle(2.3,4.5);
System.out.println(r1.area());
Rectangle r2=new Rectangle(1.4, 6.8);
System.out.println(r2.area());
if(r1.compareTo(r2)==1) {
System.out.println("矩形r1的面既大");
}else {
System.out.println("矩形r2的面既大");
}
}
}
这个需求写的很清楚,难度也不高。
如果根据这个需求都写不出来代码。那你就多练习一下Java基础,这些都是很基础的。 现在工作中也都是根据需求写功能的。
建议看看书,比较基础的东西。类是什么,类的组成部分。属性是什么,属性的基础类型有哪些。方法是什么,方法的组成是那些。至于最后一个排序,题目说了实现Comparable接口。这个类应该需要重写里面的方法吧,这个重写的方法会不会是排序的规则?那我们用这两个参数o1.area - o2.area。然后将所有Rectangle对象放进List中.sort()就可以将他们按面积排序(放进Set中应该可以自动排序)。
import org.jetbrains.annotations.NotNull;
import java.util.Set;
import java.util.TreeSet;
public abstract class Shape {
// 方法计算图形的面积
abstract double area();
}
class Circle extends Shape {
double r;
public Circle(double r) {
this.r = r;
}
@Override
double area() {
return 3.14 * r * r;
}
}
class Rectangle extends Shape implements Comparable<Rectangle>{
double width;
double height;
public static void main(String[] args) {
Set<Rectangle> treeSet = new TreeSet<Rectangle>();
Rectangle rectangle = new Rectangle(3.1, 5);
Rectangle rectangle1 = new Rectangle(4.2, 5);
Rectangle rectangle2 = new Rectangle(7.1, 5);
Rectangle rectangle3 = new Rectangle(1.1, 5);
treeSet.add(rectangle);
treeSet.add(rectangle1);
treeSet.add(rectangle2);
treeSet.add(rectangle3);
// 根据面积进行比较大小
System.out.println(treeSet);
}
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public String toString() {
return "Rectangle area:{" + area() + "}";
}
@Override
double area() {
return width * height;
}
@Override
public int compareTo(@NotNull Rectangle o) {
return (int)o.area() - (int)area();
}
}
我写
我写