[英]Cannot find variable from subclass in main class
我试图通过使用v.Volume(volume);
从我的测试类超类的子类中使用Volume
方法v.Volume(volume);
但是却说找不到符号volume
。 我正在测试类中设置半径,并且应该从中输出体积。 我觉得我看起来很明显。 我知道它正在尝试使用超类中的名为volume的变量,但是我不确定该放置什么。
测试类代码
//balloon testing
Balloon r = new Balloon();
Balloon v = new Balloon();
System.out.println("Radius " + r.getRadius());
System.out.println("Volume " + v.getVolume());
r.inflate(5);
v.Volume(volume);
System.out.println("Radius " + r.getRadius());
System.out.println("Volume " + r.getVolume());
子类代码
public class Balloon {
//declare
public double radius;
public double volume;
//constructor
public Balloon(){
radius = 0;
volume = 0;
}
//setters
public void inflate(double r){
radius = r;
}
//accessors
public double getRadius(){
return radius;
}
public double getVolume(){
return volume;
}
public void Volume(double volume){
volume = ((4/3)* Math.PI * (radius*radius*radius));
}
}
目前尚不清楚您要问的是什么,但无论如何我都会尽力回答。
您在这里没有子类或超类, 这些都是非常具体的术语 ,欢迎您进一步了解。
不过,对于您的问题,我认为您的问题是在Volume方法中您传入了根本不用的参数( volume
)。 而是根据半径设置成员变量( Balloon.volume
)。 Balloon.volume
与传递的参数double volume
有很大不同。 我为您的课程添加了注释,以尝试阐明此处的情况。
public class Balloon {
//declare
public double radius; //this is the member variable which is a property of each member of the Balloon class. I refer to it above as Balloon.volume
public double volume;
public Balloon(){
radius = 0;
volume = 0;
}
public void inflate(double r){
radius = r;
}
public double getRadius(){
return radius;
}
public double getVolume(){
return volume;
}
public void Volume(double volume){ //this is an external, unused parameter
volume = ((4/3)* Math.PI * (radius*radius*radius)); //this sets Balloon.volume and ignores the parameter volume
}
}
如果重命名变量,可能会更清楚发生了什么:
public void Volume(double someOtherVolume){ //this is an external, unused parameter
volume = ((4/3)* Math.PI * (radius*radius*radius)); //this sets Balloon.volume and ignores the parameter volume
}
这应该清楚表明参数和成员变量是不同的。 您的符号异常来自以下行:
v.Volume(volume);
在parens中的变量从未定义。 您必须先声明并定义一个变量,然后再使用它。
double volume = 8;
由于在测试班级中,您不在气球类中,因此不能简单地引用Balloon.volume
。 您必须创建一个新变量。
将Volume方法主体更改为(并重命名):
public void calculateVolume(){
volume = ((4/3)* Math.PI * (radius*radius*radius));
}
在调用此方法之前-通过设置器设置半径值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.