2014-12-10 2 views
1

Очень простой класс Rational, который я пытаюсь создать.Перегрузка метода конструктора Java

Если в основных методов, один называет Rational(2) затем num = 2 и den = 1

Если один вызывает Rational(2, 4) то num = 2 и den = 4

Вот мой код:

public class Rational { 

    public long num;  
    public long den; 

    Rational(long arg1, long arg2){ 

     num = arg1;  
     den = arg2; 

    } 

    Rational(long arg1){ 

     long x = 1; 
     Rational(arg1, x); //Rational(long, long) is undefined for type Rational 

    } 

} 

Я прокомментировал сообщение об ошибке Я понятия не имею, как исправить.

Любые предложения?

ответ

7

Вы должны использовать this ключевое слово, но это должно быть первое заявление в конструкторе, так оно не будет возможно определить x до того, что

this(arg1, 1); 
2
this(arg1, 1); 

Вы называете другой конструктор, используя ключевое слово this, подобно тому, как вы будете использовать super. Он также должен быть первым утверждением в теле конструктора. Поскольку это первый раз, вам придется изменить способ, которым вы проходите в x в своем примере.

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