建立Shape父类,以及三个子类Rectangle类,Square类,Circle类建立测试类,测试三类
时间: 2024-10-08 16:19:22 浏览: 30
接口的应用Shape类,Rectangle、Triangle、Square
在面向对象编程中,我们可以创建一个名为`Shape`的抽象父类,然后为矩形、正方形和圆形定义具体的子类。以下是简单的示例:
```java
// Shape父类
abstract class Shape {
// 抽象方法,所有形状都有面积计算方法
abstract double getArea();
// 具体方法,提供通用的行为
void printName() {
System.out.println("这是一个形状");
}
}
// Rectangle类
class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
@Override
double getArea() {
return length * width;
}
// 覆盖父类的printName方法,添加矩形名称
@Override
void printName() {
System.out.println("这是一个矩形,长 " + length + ", 宽 " + width);
}
}
// Square类
class Square extends Shape {
private double side;
public Square(double side) {
this.side = side;
}
@Override
double getArea() {
return side * side;
}
// 由于Square是Rectangle的特殊情况,这里不需要覆盖printName,它会自动继承Rectangle的实现
// 然而,可以增加特定信息
void printSide() {
System.out.println("这是一个正方形,边长 " + side);
}
}
// Circle类
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
double getArea() {
return Math.PI * radius * radius;
}
// 同理,Circle类也不需要覆盖printName,但可以添加圆周相关的功能
void printRadius() {
System.out.println("这是一个圆,半径 " + radius);
}
}
// 测试类 - TestShapes
public class TestShapes {
public static void main(String[] args) {
Shape rectangle = new Rectangle(5, 4);
Shape square = new Square(3);
Shape circle = new Circle(2);
rectangle.printName(); // 输出矩形相关信息
System.out.println("矩形的面积: " + rectangle.getArea());
square.printName(); // 自动继承矩形的打印
System.out.println("正方形的面积: " + square.getArea());
circle.printName(); // 自动继承矩形的打印
System.out.println("圆的面积: " + circle.getArea());
// 示例性地展示如何使用子类的特有方法
square.printSide(); // 输出正方形边长
circle.printRadius(); // 输出圆的半径
}
}
```
在这个例子中,`TestShapes`类用于测试每个形状类的行为。当实例化并操作这些对象时,它们会显示各自特有的属性,并调用正确的`getArea`方法。
阅读全文