2013-11-17 2 views
0

Ошибки я получаю являются 1 а не может найти ошибки символаИмея 2 компиляции ошибок в моей программе java. уточнения пожалуйста

и

2 «Конструктор круг, в классе круг не может быть применен к данным типам.»

В этой точке I просто я могу понять, что я сделал не так.

public class Circle { 
    private double radius; 

    public Circle (double radius) { 
     radius = radius; 
    }  

    public double getRadius() { 
     return radius; 
    } 

    public double getArea() { 
     return radius * radius * Math.PI; 
    } 
} 

class B extends Circle { 
    private double length; 

    B (double radius, double length) { 
     Circle (radius); 
     length = length; 
    } 

    //**override getArea()*/ 
    public double getArea() { 
     return getArea() * length; 
    } 
} 
+1

Каковы ошибки? – KernelPanic

+0

Поскольку никакие методы не задают радиус и длину, объявите переменные экземпляра 'final'. Это делает цель понятной. –

ответ

0

Я бы порекомендовал вам изменить:

radius = radius; 

в

this.radius = radius; // 'this' makes reference to the actual instance 

И изменить B конструктор:

public Test(double radius, double length) 
{ 
    super(radius); // Calls super class constructor 
    this.length = length; 
} 
1

В супер-класса Circle использования this для обозначения текущего экземпляра.

public Circle (double radius) { 
    this.radius = radius;// Use this 
} 

В суб-класса использования super() для доступа к супер-конструктор класса. Переход от

B (double radius, double length) { 
Circle (radius);// This is compilation error. 
length = length; 
} 

Для

B (double radius, double length) { 
super(radius); // This is the way to access super-clss constructor. 
this.length = length; //Use this to refer current instance length. 
} 
+0

И используйте конструктор 'this.length = length'. В противном случае 'length' интерпретируется как аргумент, а не переменная экземпляра, и переменная экземпляра никогда не устанавливается. Фактически, используйте 'final double length' в списке аргументов конструктора. Вы также можете ограничить «радиус» позитивным. –

+0

ах я вижу спасибо. (Я получил еще одну ошибку: мне нужно определить основной класс как public static void main (string [] args)) – RickTheSlick

+0

Это должно быть 'public static void main (String [] args)' для запуска кода. – Masudul

Смежные вопросы