gpt4 book ai didi

java - 抽象类的静态方法

转载 作者:行者123 更新时间:2023-12-02 08:43:49 34 4
gpt4 key购买 nike

我有抽象类Figures和2个继承者。三角形、正方形和长方形。我需要创建一个静态方法,它将使用图形数组并返回它们的面积之和。

abstract class Figure {

abstract double calculatePerimeter();

abstract double calculateArea()

public class Rectangle extends Figure {
double a;
double b;

public Rectangle(double a, double b) {
this.a = a;
this.b = b;
}

@Override
double calculatePerimeter() {
return 2 * (a + b);
}

@Override
double calculateArea() {
return a * b;
}
}
public class Triangle extends Figure {
double a;
double b;
double c;

public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}

@Override
double calculatePerimeter() {
return a + b + c;
}

@Override
double calculateArea() {
double p = calculatePerimeter() / 2.0;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}

所以我应该创建一个数字列表并在方法中使用,但它不起作用

Figure[] figures=new Figure[3];
figures[1]=new Square(4.6);
figures[2]=new Rectangle(4.5,5.2);
figures[3]=new Triangle(6,5,2.2);
 public static double findSquare(????????) {
return square.calculateArea() + rectangle.calculateArea() + triangle.calculateArea();

它应该如何工作以及我应该阅读哪个主题?请解释一下

最佳答案

由于您使用继承并在每个子图形(正方形、矩形、三角形)上实现了 calculateArea,因此您所要做的就是迭代图形数组并对 calculateArea 求和 在所有数字上:

public static double findSquare(Figure[] arr) {
double sum = 0;
for (int i : arr) {
sum = sum + arr[i].calculateArea();
}
return sum;

注意:我真的认为您应该阅读并理解如何使用 Java Inheritance并与 Arrays

关于java - 抽象类的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61214744/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com