下面是使用Java语言设计的Shape、Circle、Rectangle、Triangle类以及TestShape类的代码实现:

// Shape类
public abstract class Shape {
    public abstract double getArea();
}

// Circle类
public class Circle extends Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    @Override
    public double getArea() {
        return Math.PI * radius * radius;
    }
}

// Rectangle类
public class Rectangle extends Shape {
    private double length;
    private double width;

    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    @Override
    public double getArea() {
        return length * width;
    }
}

// Triangle类
public class Triangle extends Shape {
    private double base;
    private double height;

    public Triangle(double base, double height) {
        this.base = base;
        this.height = height;
    }

    @Override
    public double getArea() {
        return 0.5 * base * height;
    }
}

// TestShape类
public class TestShape {
    private static double area = 0;

    public static void countArea(Shape s) {
        area += s.getArea();
    }

    public static void main(String[] args) {
        Circle s1 = new Circle(5.0);
        Rectangle s2 = new Rectangle(3.0, 4.0);
        Triangle s3 = new Triangle(2.0, 3.0);

        countArea(s1);
        countArea(s2);
        countArea(s3);

        System.out.println('Total area: ' + area);
    }
}

在TestShape类中,我们创建了一个静态变量area来存储总面积,并实现了countArea静态方法,该方法接受一个Shape对象作为参数,并将其面积累加到area中。在main函数中,我们创建了一个Circle对象s1、一个Rectangle对象s2和一个Triangle对象s3,并通过调用countArea方法将它们的面积累加到area中。最后,我们输出area的值。

请注意,Shape类是一个抽象类,因为它的getArea方法没有具体的语句实现。在Circle、Rectangle和Triangle子类中,我们分别重写了getArea方法,根据实际形状计算并返回相应的面积。

Java 面向对象编程:设计形状类及其子类计算面积

原文地址: https://www.cveoy.top/t/topic/RXs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录