簡體   English   中英

從主類的子類中找不到變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM