通过程序设置几何图形(Shape),矩形(Rectangle),圆形(Circle),正方形(Square),几种类型,能够利用接口和多态性计算几何图形的面积和周长并显示
时间: 2024-10-09 09:10:38 浏览: 32
在面向对象编程中,可以创建一个名为"Shape"的接口或者抽象类,定义计算面积和周长的基本方法。然后,具体的形状如矩形、圆形和正方形将作为该接口的实现类(Concrete Classes)。这里是一个简单的例子:
```java
// Shape 接口
public interface Shape {
double getArea();
double getPerimeter();
}
// 矩形类,实现Shape接口
public class Rectangle implements Shape {
private double width;
private double height;
// 构造函数和getters-setters略
@Override
public double getArea() {
return width * height;
}
@Override
public double getPerimeter() {
return 2 * (width + height);
}
}
// 圆形类,实现Shape接口
public class Circle implements Shape {
private double radius;
// 构造函数和getters-setters略
@Override
public double getArea() {
return Math.PI * Math.pow(radius, 2);
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
}
// 正方形类,实现Shape接口
public class Square extends Rectangle {
public Square(double side) {
super(side, side); // 将边长赋值给矩形的宽和高
}
@Override
public double getPerimeter() {
return 4 * side; // 使用统一的变量名side表示边长
}
}
// 主函数演示如何利用多态性
public static void main(String[] args) {
Shape rectangle = new Rectangle(5, 7);
Shape circle = new Circle(3);
Shape square = new Square(4);
System.out.println("Rectangle area: " + rectangle.getArea());
System.out.println("Rectangle perimeter: " + rectangle.getPerimeter());
System.out.println("Circle area: " + circle.getArea());
System.out.println("Circle perimeter: " + circle.getPerimeter());
System.out.println("Square area: " + square.getArea());
System.out.println("Square perimeter: " + square.getPerimeter());
}
```
在这个例子中,无论我们创建的是哪种形状的对象,都可以直接调用它们的`getArea`和`getPerimeter`方法,这是多态性的体现。用户不需要关心内部的具体实现细节,只需要关注公共的行为即可。
阅读全文