簡體   English   中英

打印出方法的返回值

[英]Printing out return value from a method

我正在學習Java,現在開始繼承。 但是我不知道如何打印出方法的返回值。

我有Circle.java超類

public class Circle 
{
    private double radius;
    public Circle()
    {
        radius = 1.0;
    }
    public double getRadius()
    {
    return radius;
    }
    public void setRadius( double r )
    {
        radius = r;
    }
    public double findArea()
    {
        return Math.pow(radius ,  2)*Math.PI;
    }   
}

和Cylinder.java子類

public class Cylinder extends Circle
{
    private double height;
    public Cylinder()
    {
        super();
        height = 1.0;
    }
    public void setHeight( double h )
    {
        height = h;
    }
    public double getHeight()
    {
        return height;
    }
    public double findVolume()
    {
        return findArea() * height;
    }
}

但是,當我在Cylinder子類中添加主要方法和System.out.println(findVolume())時,我得到“無法從Cylinder類型對非靜態方法findVolume()進行靜態引用”。 任何幫助都會很棒

main方法中,您位於類范圍內,而不是實例范圍內。 為了訪問實例方法,您需要對類的實例進行操作:

public static void main(String[] args) {
   Cylinder cylinder = new Cylinder();
   cylinder.setHeight(10);
   cylinder.setRadius(30);
   System.out.println(cylinder.findVolume());
}

這與繼承無關。

錯誤消息很清楚。 main方法是靜態的, findVolume不是靜態的,您不能直接從靜態方法引用非靜態方法。

相反,您應該創建一個Cylinder實例並在此實例上調用findVolume

Cylinder cylinder = new Cylinder();
// set values
System.out.println(cylinder.findVolume())

那是因為主要方法是靜態的。 您嘗試調用對象方法而不創建實例。

這是應該如何工作的:

public static void main(String[] args){
    Cylinder cylinder = new Cylinder();

    System.out.println(cylinder.findVolume());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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