编写一个程序,定义抽象类shap,由她派生出5个派生类
时间: 2024-09-18 21:06:16 浏览: 44
在Java中,我们可以编写一个抽象类`Shape`作为基础,然后让五个不同的形状(如Rectangle、Circle、Triangle、Square、Polygon等)继承自这个抽象类。抽象类通常包含一些抽象方法(无实现的方法),用于规定所有子类都应具有的行为。
以下是一个简单的示例:
```java
// 定义抽象Shape类
abstract class Shape {
// 抽象方法,每个形状都需要定义面积计算
abstract double getArea();
// 具体方法,例如打印形状名称
public void printName() {
System.out.println("This is an abstract shape.");
}
}
// 派生的五种形状类
class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
double getArea() {
return width * height;
}
@Override
public void printName() {
System.out.println("Rectangle with width " + width + " and height " + height);
}
}
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
double getArea() {
return Math.PI * radius * radius;
}
@Override
public void printName() {
System.out.println("Circle with radius " + radius);
}
}
// 类型为其他形状的三个例子
class Triangle extends Shape {
private double base, height;
// ...(类似Rectangle的构造函数和getArea方法)
}
class Square extends Shape {
private double side;
// ...(类似Rectangle的构造函数和getArea方法)
}
class Polygon extends Shape {
int sides; // 等边多边形的边数
// ...(类似Rectangle的构造函数和getArea方法,需要计算公式)
// ...(实现抽象方法)
}
// 使用场景
public class Main {
public static void main(String[] args) {
Shape rectangle = new Rectangle(5, 4);
Shape circle = new Circle(3);
// 输出各自面积并打印名称
System.out.println(rectangle.getArea());
rectangle.printName();
System.out.println(circle.getArea());
circle.printName();
}
}
```
阅读全文