.定义一个抽象类shape ,用来表示一般图形。shape具有属性name,表示图形的名字,如 三角形、矩形、圆形,抽象方法area和perimeter,分别用来计算形状的面积和周长。 (1)定义一个Rectangle类继承shape类,定义矩形的属性width和height,并实现两个抽 象方法计算矩形的面积和周长,并覆盖toString方法。 (2)定义一个Circle类继承shape类,定义圆形的属性半径R,并实现两个抽象方法计算圆形 的面积和周长,并覆盖toString方法。要求Circle类不能派生子类。 (3)定义测试类,在main()方法中创建shape数组,其中创建一个Rectangle类对象和一 个Circle类对象,并输出对象信息,计算图形的面积和周长。
时间: 2024-02-01 11:16:49 浏览: 181
编写一个抽象类Shape
4星 · 用户满意度95%
下面是实现上述要求的代码:
```java
// Shape抽象类
abstract class Shape {
protected String name;
public Shape(String name) {
this.name = name;
}
public abstract double area();
public abstract double perimeter();
public String toString() {
return "Shape: " + name + ", Area: " + area() + ", Perimeter: " + perimeter();
}
}
// Rectangle类
class Rectangle extends Shape {
private double width, height;
public Rectangle(double width, double height) {
super("Rectangle");
this.width = width;
this.height = height;
}
public double area() {
return width * height;
}
public double perimeter() {
return 2 * (width + height);
}
}
// Circle类
final class Circle extends Shape {
private double r;
public Circle(double r) {
super("Circle");
this.r = r;
}
public double area() {
return Math.PI * r * r;
}
public double perimeter() {
return 2 * Math.PI * r;
}
}
// 测试类
public class Test {
public static void main(String[] args) {
Shape[] shapes = {new Rectangle(3, 4), new Circle(2.5)};
for (Shape s : shapes) {
System.out.println(s.toString());
}
}
}
```
输出结果为:
```
Shape: Rectangle, Area: 12.0, Perimeter: 14.0
Shape: Circle, Area: 19.634954084936208, Perimeter: 15.707963267948966
```
阅读全文