我正在学习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()进行静态引用”。任何帮助都会很棒
答案 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());
}