Распечатка возвращаемого значения из метода - PullRequest
0 голосов
/ 29 апреля 2018

Я изучаю 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;
    }
}

Но когда я добавляю основной метод и System.out.println (findVolume ()) в подкласс Cylinder, я получаю, что «Невозможно сделать статическую ссылку на нестатический метод findVolume () из типа Cylinder». Любая помощь будет отличной

Ответы [ 3 ]

0 голосов
/ 29 апреля 2018

Это не имеет ничего общего с наследованием.

Сообщение об ошибке довольно ясно. Метод main является статическим, findVolume не является статическим, вы не можете ссылаться на нестатический метод напрямую из статического метода.

Вместо этого вы должны создать экземпляр Cylinder и вызвать findVolume для этого экземпляра:

Cylinder cylinder = new Cylinder();
// set values
System.out.println(cylinder.findVolume())
0 голосов
/ 29 апреля 2018

Это потому, что основной метод является статическим. Вы пытаетесь вызвать метод объектов без создания экземпляра.

Вот как это должно работать:

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

    System.out.println(cylinder.findVolume());
}
0 голосов
/ 29 апреля 2018

В методе main вы находитесь в области действия класса, а не в области действия экземпляра. Чтобы получить доступ к методам экземпляра, вам нужно работать с экземпляром класса:

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