設計抽象類Shape,包含抽象方法area()和perimeter()。子類Rect(矩形)和Circle(圓形)實現具體計算邏輯,主程序演示多態調用。
public class ShapeTest {
// 內部類演示,實際項目建議獨立文件
abstract static class Shape {
public abstract double area();
public abstract double perimeter();
}
static class Rect extends Shape {
private final double width, length;
public Rect(double w, double l) { this.width = w; this.length = l; }
@Override public double area() { return width * length; }
@Override public double perimeter() { return 2 * (width + length); }
}
static class Circle extends Shape {
private final double r;
public Circle(double r) { this.r = r; }
@Override public double area() { return Math.PI * r * r; }
@Override public double perimeter() { return 2 * Math.PI * r; }
}
public static void main(String[] args) {
Shape rect = new Rect(2, 3);
System.out.println("矩形周長:" + rect.perimeter()); // 10.0
System.out.println("矩形面積:" + rect.area()); // 6.0
Shape circle = new Circle(1); // 單位圓
System.out.println("圓形周長:" + circle.perimeter()); // 6.283...
System.out.println("圓形面積:" + circle.area()); // 3.141...
}
}
Triangle類,構造器驗證三角形不等式Comparable<Shape>按面積排序Stream API批量計算總面積:shapes.stream().mapToDouble(Shape::area).sum()