gpt4 book ai didi

java - 为什么对继承对象的最后一次调用似乎传递了 100 而不是 50?

转载 作者:行者123 更新时间:2023-12-02 05:05:37 27 4
gpt4 key购买 nike

我不明白我哪里出了问题。它看起来工作正常,直到我到达最后一个调用,其中三角形面积返回为 100 而不是 50。我认为这可以正常工作,因为 Field 类的变量hold 被分配给对象 b三角形。请您帮助我了解我的术语并帮助我理解这段代码哪里出了问题。

public class Figure {
double dim1;
double dim2;

Figure(double a, double b){
dim1 = a;
dim2 = b;
}

double area(){
System.out.println("Area of shape is " + dim1*dim2);
return dim1*dim2;
}
}

public class Triangle extends Figure{
double dim1;
double dim2;

Triangle(double a,double b){
super(a,b);
dim1 = a;
dim2=b;
}

@Override

double area(){
System.out.println("Area of triangle is " + dim1*dim2/2);
return dim1*dim2;
}

}
public class RunFigure {
public static void main(String[] args) {
Figure a = new Figure(10,10);
a.area();

Triangle b = new Triangle(10,10);
b.area();

Figure holder;

holder = a;
System.out.println("a area " + holder.area());

holder = b;
System.out.println("b area " + holder.area());
}
}

最佳答案

在 Triangle 中,您像这样重写了面积函数:

   @Override
double area(){
System.out.println("Area of triangle is " + dim1*dim2/2); // should print 50
return dim1*dim2; // will return 100
}

和 System.out.println("b 区域 "+holder.area());会打印你一次“三角形的面积为50”,然后它会获取返回值并打印“b面积100”。

您还需要更改返回值的计算。

关于java - 为什么对继承对象的最后一次调用似乎传递了 100 而不是 50?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27816883/

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