You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
3.5 KiB
155 lines
3.5 KiB
import java.util.Arrays;
|
|
|
|
// ========== 1. 抽象类 Shape ==========
|
|
abstract class Shape {
|
|
protected String name;
|
|
|
|
public Shape(String name) {
|
|
this.name = name;
|
|
}
|
|
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
|
|
public void setName(String name) {
|
|
this.name = name;
|
|
}
|
|
|
|
public abstract double getArea();
|
|
|
|
@Override
|
|
public String toString() {
|
|
return name + " - 面积: " + String.format("%.2f", getArea());
|
|
}
|
|
}
|
|
|
|
// ========== 2. 圆形类 ==========
|
|
class Circle extends Shape {
|
|
private double radius;
|
|
|
|
public Circle(String name, double radius) {
|
|
super(name);
|
|
this.radius = radius;
|
|
}
|
|
|
|
public double getRadius() {
|
|
return radius;
|
|
}
|
|
|
|
public void setRadius(double radius) {
|
|
this.radius = radius;
|
|
}
|
|
|
|
@Override
|
|
public double getArea() {
|
|
return Math.PI * radius * radius;
|
|
}
|
|
}
|
|
|
|
// ========== 3. 长方形类 ==========
|
|
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;
|
|
}
|
|
|
|
public double getLength() {
|
|
return length;
|
|
}
|
|
|
|
public void setLength(double length) {
|
|
this.length = length;
|
|
}
|
|
|
|
public double getWidth() {
|
|
return width;
|
|
}
|
|
|
|
public void setWidth(double width) {
|
|
this.width = width;
|
|
}
|
|
|
|
@Override
|
|
public double getArea() {
|
|
return length * width;
|
|
}
|
|
}
|
|
|
|
// ========== 4. 三角形类 ==========
|
|
class Triangle extends Shape {
|
|
private double base;
|
|
private double height;
|
|
|
|
public Triangle(String name, double base, double height) {
|
|
super(name);
|
|
this.base = base;
|
|
this.height = height;
|
|
}
|
|
|
|
public double getBase() {
|
|
return base;
|
|
}
|
|
|
|
public void setBase(double base) {
|
|
this.base = base;
|
|
}
|
|
|
|
public double getHeight() {
|
|
return height;
|
|
}
|
|
|
|
public void setHeight(double height) {
|
|
this.height = height;
|
|
}
|
|
|
|
@Override
|
|
public double getArea() {
|
|
return (base * height) / 2;
|
|
}
|
|
}
|
|
|
|
// ========== 5. 工具类 ==========
|
|
class ShapeUtil {
|
|
|
|
public static void printArea(Shape shape) {
|
|
if (shape == null) {
|
|
System.out.println("形状不能为空");
|
|
return;
|
|
}
|
|
System.out.println(shape.toString());
|
|
}
|
|
|
|
public static void printAreas(Shape[] shapes) {
|
|
System.out.println("=== 形状面积列表 ===");
|
|
for (Shape shape : shapes) {
|
|
printArea(shape);
|
|
}
|
|
System.out.println("==================");
|
|
}
|
|
}
|
|
|
|
// ========== 6. 主类(必须是public,且与文件名相同)==========
|
|
public class Main {
|
|
public static void main(String[] args) {
|
|
// 创建各种形状
|
|
Circle circle = new Circle("圆形", 5.0);
|
|
Rectangle rectangle = new Rectangle("长方形", 4.0, 6.0);
|
|
Triangle triangle = new Triangle("三角形", 3.0, 4.0);
|
|
|
|
// 使用工具类打印面积
|
|
System.out.println("单个形状面积打印:");
|
|
ShapeUtil.printArea(circle);
|
|
ShapeUtil.printArea(rectangle);
|
|
ShapeUtil.printArea(triangle);
|
|
|
|
// 多态演示:批量处理
|
|
System.out.println("\n批量处理(多态演示):");
|
|
Shape[] shapes = {circle, rectangle, triangle};
|
|
ShapeUtil.printAreas(shapes);
|
|
}
|
|
}
|
|
|