java - 无法在主类中找到子类的变量

标签 java variables subclass superclass

我试图通过使用 v.Volume(volume); 在我的测试类父类(super class)中使用子类中的 Volume 方法,但它说它可以找不到符号体积。我在测试类中设置半径,它应该从中输出体积。我觉得我忽略了一些非常明显的事情。我知道它正在尝试使用父类(super class)中名为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));
}

}

最佳答案

不清楚你在这里问什么,但我还是会尽力回答。

这里没有子类或父类(super class),those are very specific terms欢迎您阅读更多相关内容。

对于你的问题,我认为你的问题是在你的 Volume 方法中你传入了一个你根本不使用的参数(volume)。相反,您可以根据半径设置一个成员变量 (Balloon.volume)。 Balloon.volume 与传递的参数 doublevolume 有很大不同。我已对您的类(class)进行了注释,以尝试阐明此处发生的情况。

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);

括号中的变量从未定义。在使用变量之前必须先声明并定义它。

双倍音量 = 8;

由于在您的测试类中,您不在气球类中,因此您不能简单地引用 Balloon.volume。您必须创建一个新变量。

关于java - 无法在主类中找到子类的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35591834/

相关文章:

Java套接字缓冲区问题

java - 如何解决 'could not find or load main class robocode.robocode'错误?

c - 如何声明不同大​​小的变量

java - 使用在另一个类中的 getter 方法中返回的变量

javascript - Math.random 关于数组

c++ - 我需要一些 C++ 专家关于扩展 std::string 的意见

java - 如何在android中的自定义适配器类中调用相机 Intent ?

java - 阿拉伯语编码

Android Activity - 在一个 Activity 类中包含大量代码是否很常见?

ios - 如何子类化 UI 元素,如 UILabel、UIButton