task.task05.task0521 Help

Помогите решить задачу!
Вызов конструктора из конструктора
Разберись, что делает программа.
Исправь конструктор с двумя параметрами так, чтобы он вызывал другой конструктор с радиусом 10.
Подумай, какой конструктор нужно вызвать.
Подсказка:
внимательно изучи реализацию конструктора по умолчанию.
P.S. новое задание из версии JavaRush 2.0

public class Circle {

public double x;
public double y;
public double radius;

public Circle(double x, double y, double radius) {
this.x = x;
this.y = y;
this.radius = radius;
}

public Circle(double x, double y) {
this(5,5,1);
this.x = x;
this.y = y;
this.radius = 10;
}

public Circle() {
this(5, 5, 1);
}

public static void main(String[] args) {
Circle circle = new Circle();
System.out.println(circle.x + " " + circle.y + " " + circle.radius);
Circle anotherCircle = new Circle(10, 5);
System.out.println(anotherCircle.x + " " + anotherCircle.y + " " + anotherCircle.radius);
}
}

10 комментариев

efklid
  • efklid
  • 0
  • Комментарий отредактирован 2017-02-08 22:35:17 пользователем efklid
this(5,5,1);
Первым действием ты вызываешь конструктор с тремя параметрами. Объект сам по себе включает все поля, объявленные в классе.
Ты вызываешь конструктор и присваиваешь значения передаваемых в скобках переменных так, как прописано в конструкторе.

Остальные действия в твоем случае только меняют значения УЖЕ инициализированных переменных.

В задаче тебе нужно сделать следующее — вызвать конструктор и инициализировать поля объекта в соответствии с логикой конструктора с двумя параметрами + полю радиус задать значение «10».
AlexNesterovich
Читаю Ваш ответ, и еще больше кажется, что мое решение правильное.=)
Не могу понять… Все условия соблюдены кроме одного:
Валидатор выдает: Конструктор с двумя параметрами должен должен вызывать другой конструктор, передав в него верные значения параметров.
Так я же вызвал первой строкой в конструкторе(this(5,5,1)/
efklid
Вы должны передать в этот конструктор (с 3 параметрами) параметры, передаваемые в текущий конструктор + значение, требуемое по условию задачи.
А вы сперва вызываете нужный конструктор, но передаете в него совсем не то, что от вас хотят, и лишь потом переопределяете параметры на те, которые надо
astraboomer
В конструкторе public Circle(double x, double y) одна строка лишняя.
Тебе уже написали какая.
AlexNesterovich
Убрал каждую, по очереди, все равно не проходит.
Dididid
Подсказка:

внимательно изучи реализацию конструктора по умолчанию.

Мне это действительно помогло!!!
ElMag
subscribe.ru/archive/comp.soft.prog.javalessons/200704/30131706.html/
Мне помогла эта статья. Надеюсь вам тоже!
AlexNesterovich
Согласно этой статье мой код верен…
Antony_P
Спасибо! Статья объяснила реализацию конструктора по умолчанию.
zradeg
Как же все-таки решается эта задача? Уже весь мозг сломал.
Вызывать, я так понимаю, следует конструктор с тремя параметрами, т.к. конструктор по умолчанию вызывает его же, но передает свои параметры. Проинициализировать параметры до вызова конструктора нельзя — компилятор считает это ошибкой.
Если же считать инициализацией вызов конструктора с одновременной передачей ему параметров, то как передать в вызываемый конструктор тех параметров, которые были переданы в вызывающий — вот что я не могу понять.
Подскажите, плз.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.