用java编写2. 抽象类Shape 如下面类图所示,设计了一个名为 Shape 的抽象类。 因为形状未知,无法计算面积,因此将 getArea 方法定义为抽象方法,子类实现 抽象方法。 toString方法输出Shape[color=XXX],返回值为String 子类使用构造方法,public 方法名(String int int) 题目要求 根据题目描述及类图,完成Shape抽象类及其子类
时间: 2023-11-27 14:50:46 浏览: 116
以下是根据题目描述及类图所编写的 Shape 抽象类及其子类的代码:
Shape.java
```java
public abstract class Shape {
private String color;
public Shape(String color) {
this.color = color;
}
public abstract double getArea();
@Override
public String toString() {
return "Shape[color=" + color + "]";
}
}
```
Circle.java
```java
public class Circle extends Shape {
private int radius;
public Circle(String color, int radius) {
super(color);
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public String toString() {
return "Circle[" + super.toString() + ",radius=" + radius + "]";
}
}
```
Rectangle.java
```java
public class Rectangle extends Shape {
private int width;
private int height;
public Rectangle(String color, int width, int height) {
super(color);
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
@Override
public String toString() {
return "Rectangle[" + super.toString() + ",width=" + width + ",height=" + height + "]";
}
}
```
Triangle.java
```java
public class Triangle extends Shape {
private int base;
private int height;
public Triangle(String color, int base, int height) {
super(color);
this.base = base;
this.height = height;
}
@Override
public double getArea() {
return 0.5 * base * height;
}
@Override
public String toString() {
return "Triangle[" + super.toString() + ",base=" + base + ",height=" + height + "]";
}
}
```
以上代码实现了一个 Shape 抽象类及其三个子类:Circle、Rectangle 和 Triangle。其中,Shape 抽象类包含一个颜色属性和一个抽象方法 getArea(),子类 Circle、Rectangle 和 Triangle 分别实现了这个抽象方法来计算自己的面积,并且重写了 toString() 方法以输出自己的属性信息。
阅读全文