java 定义抽象基类shape_由它派生出三个派生类_编写一个程序,定义抽象基类Shape,由它派生出5个派生类:Cricle(圆形),Square(正方形), Rectangle(矩形), Tra...
时间: 2024-03-27 14:37:07 浏览: 103
好的,我来为您编写这个程序。
```java
// 定义抽象基类 Shape
abstract class Shape {
// 抽象方法 computeArea 计算面积
abstract double computeArea();
}
// 派生类 Circle,继承 Shape
class Circle extends Shape {
double radius; // 圆的半径
// 构造函数
Circle(double r) {
radius = r;
}
// 实现 computeArea 方法
double computeArea() {
return Math.PI * radius * radius;
}
}
// 派生类 Square,继承 Shape
class Square extends Shape {
double side; // 正方形的边长
// 构造函数
Square(double s) {
side = s;
}
// 实现 computeArea 方法
double computeArea() {
return side * side;
}
}
// 派生类 Rectangle,继承 Shape
class Rectangle extends Shape {
double length; // 矩形的长
double width; // 矩形的宽
// 构造函数
Rectangle(double l, double w) {
length = l;
width = w;
}
// 实现 computeArea 方法
double computeArea() {
return length * width;
}
}
// 派生类 Triangle,继承 Shape
class Triangle extends Shape {
double base; // 三角形的底
double height; // 三角形的高
// 构造函数
Triangle(double b, double h) {
base = b;
height = h;
}
// 实现 computeArea 方法
double computeArea() {
return 0.5 * base * height;
}
}
// 派生类 Trapezoid,继承 Shape
class Trapezoid extends Shape {
double top; // 梯形的上底
double bottom; // 梯形的下底
double height; // 梯形的高
// 构造函数
Trapezoid(double t, double b, double h) {
top = t;
bottom = b;
height = h;
}
// 实现 computeArea 方法
double computeArea() {
return 0.5 * (top + bottom) * height;
}
}
// 测试代码
public class Main {
public static void main(String[] args) {
Circle c = new Circle(5);
System.out.println("圆形的面积是:" + c.computeArea());
Square s = new Square(4);
System.out.println("正方形的面积是:" + s.computeArea());
Rectangle r = new Rectangle(3, 5);
System.out.println("矩形的面积是:" + r.computeArea());
Triangle t = new Triangle(4, 6);
System.out.println("三角形的面积是:" + t.computeArea());
Trapezoid tr = new Trapezoid(3, 5, 4);
System.out.println("梯形的面积是:" + tr.computeArea());
}
}
```
运行结果:
```
圆形的面积是:78.53981633974483
正方形的面积是:16.0
矩形的面积是:15.0
三角形的面积是:12.0
梯形的面积是:16.0
```
以上就是这个程序的实现,您可以按照自己的需求进行修改和扩展。
阅读全文