Java 面向对象编程:设计形状类及其子类计算面积
下面是使用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方法,根据实际形状计算并返回相应的面积。
原文地址: https://www.cveoy.top/t/topic/RXs 著作权归作者所有。请勿转载和采集!