定义一个抽象类 Shape包含抽象方法 double area()和 double perimeter()定义三个分别表示圆形、矩形和三角形的派生类,分别计算出矩形和圆形的面积。定义一个函数 void printShapelnfo(Shape& shape)输出传入的形状的面积和周长
时间: 2023-02-16 12:58:37 浏览: 137
抽象类 Shape 中包含抽象方法 double area() 和 double perimeter()。
三个派生类分别表示圆形、矩形和三角形。
定义一个函数 void printShapeInfo(Shape s),该函数用于输出给定图形的面积和周长信息。
代码如下:
```
abstract class Shape {
abstract double area();
abstract double perimeter();
}
class Circle extends Shape {
double radius;
Circle(double radius) {
this.radius = radius;
}
@Override
double area() {
return Math.PI * radius * radius;
}
@Override
double perimeter() {
return 2 * Math.PI * radius;
}
}
class Rectangle extends Shape {
double width;
double height;
Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
double area() {
return width * height;
}
@Override
double perimeter() {
return 2 * (width + height);
}
}
class Triangle extends Shape {
double side1;
double side2;
double side3;
Triangle(double side1, double side2, double side3) {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
@Override
double area() {
double s = (side1 + side2 + side3) / 2;
return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
}
@Override
double perimeter() {
return side1 + side2 + side3;
}
}
void printShapeInfo(Shape s) {
System.out.println("面积: " + s.area());
System.out.println("周长: " + s.perimeter());
}
```
阅读全文