声明一个图形基类 Shape,在它的基础上派生出矩形类 Rectangle 和圆形类 Circle,它们都有计算面积和周长、输出图形信息等成员函数,再在 Rectangle 类的基础上派生出正方形类
时间: 2025-01-01 14:39:54 浏览: 16
在面向对象编程中,我们可以创建一个名为 `Shape` 的基类,作为所有图形的基本抽象。这个基类会包含一些通用的方法,如计算面积和周长的抽象方法(因为它们的具体实现会在每个形状的子类中),以及一个用于输出图形基本信息的方法。接下来,我们分别创建 `Rectangle` 和 `Circle` 两个子类,这两个类都继承自 `Shape` 并重写计算面积和周长的方法,因为他们有自己的特殊计算公式。
例如:
```java
// 基类 Shape
public abstract class Shape {
protected String name;
public Shape(String name) {
this.name = name;
}
// 抽象方法,需要在子类中具体实现
public abstract double getArea();
public abstract double getCircumference();
// 输出图形信息
public void displayInfo() {
System.out.println("Name: " + name);
}
}
// 矩形类 Rectangle
public class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(String name, double length, double width) {
super(name);
this.length = length;
this.width = width;
}
@Override
public double getArea() {
return length * width;
}
@Override
public double getCircumference() {
return 2 * (length + width);
}
}
// 圆形类 Circle
public class Circle extends Shape {
private double radius;
public Circle(String name, double radius) {
super(name);
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getCircumference() {
return 2 * Math.PI * radius;
}
}
// 正方形类 Square(从 Rectangle 派生)
public class Square extends Rectangle {
public Square(String name, double sideLength) {
super(name, sideLength, sideLength); // 使用一个边长代替长度和宽度
}
}
```
在这个例子中,`Square` 类实际上是 `Rectangle` 的一个特例,因为它有固定的宽和高相等。因此,当我们创建一个 `Square` 实例时,其面积和周长的计算就是基于边长来进行的。
阅读全文