从方法中打印返回值

时间:2018-04-29 10:09:53

标签: java inheritance return

我正在学习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子类中添加main方法和System.out.println(findVolume())时,我得到“无法从类型Cylinder中对非静态方法findVolume()进行静态引用”。任何帮助都会很棒

3 个答案:

答案 0 :(得分:0)

main方法中,您属于类范围,而不是实例范围。要访问实例方法,您需要对类的实例进行操作:

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

答案 1 :(得分:0)

这与继承无关。

错误信息非常清楚。 main方法是静态的,findVolume不是静态的,您不能直接从静态方法引用非静态方法。

相反,您应该在此实例上创建Cylinder的实例并调用findVolume

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

答案 2 :(得分:0)

这是因为主要方法是静态的。 您尝试在不创建实例的情况下调用对象方法。

这是它应该如何运作的:

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

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