设计一个图形基类包括长和宽,通过图形基类派生出三个不同的图形,并设计他们的接口计算面积
时间: 2024-10-01 15:06:21 浏览: 54
在面向对象的设计中,我们可以创建一个名为`Shape`的基类作为图形的抽象,包含长度(`length`)和宽度(`width`)属性。然后,我们为需要计算面积的不同形状(如矩形、圆形和三角形)分别派生出三个具体的子类:Rectangle、Circle和Triangle。
首先,这里是一个基本的`Shape`基类设计:
```java
public abstract class Shape {
protected double length;
protected double width;
public Shape(double length, double width) {
this.length = length;
this.width = width;
}
// 抽象方法,用于计算面积,每个子类需提供具体实现
public abstract double getArea();
}
```
接着,为每个形状定义子类并实现`getArea()`方法:
1. **Rectangle**子类:
```java
public class Rectangle extends Shape {
public Rectangle(double length, double width) {
super(length, width);
}
@Override
public double getArea() {
return length * width;
}
}
```
2. **Circle**子类:
```java
import java.lang.Math;
public class Circle extends Shape {
private double radius;
public Circle(double radius) {
super(radius * 2, radius * 2); // 圆的面积公式假设直径而非半径
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
}
```
3. **Triangle**子类:
```java
public class Triangle extends Shape {
private double base, height;
public Triangle(double base, double height) {
super(base / 2, height); // 等腰三角形的面积公式取底的一半和高
this.base = base;
this.height = height;
}
@Override
public double getArea() {
return (base * height) / 2;
}
}
```
现在,每个子类都有其特定的面积计算方法,而`Shape`基类提供了一个通用的接口,使得可以根据传入的具体实例类型来计算面积。这体现了多态的优势。
阅读全文