package com.javarush.task.task05.task0521;
/*
Вызов конструктора из конструктора
*/
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(y, y ,x);
}
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);
}
}
Kang and Kodos
6 уровень
почему так не срабатывает? радиус же 10 в итоге
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
WantToSleep
4 августа 2019, 18:29
1.Тут ошибка, прочтите еще раз условие.Какой радиус должен быть у конструтора?
2.Вы не вызываете метод в своем методе. Это делается с помощью ключевого слова this.
Например,чтобы вызвать метод со значениями (5,5,1) вам надо написать в своем методе :
this(5,5,1)
+1
Anonymous #1384518Expert
2 июля 2019, 15:53
При таком варианте создания new Circle(10, 5);
вызовется конструктор тот, что с двумя параметрами, причем первое число указывает x, а второе число y, а радиус должен указываться внутри конструктора.
Что это значит. Это значит что при создании Circle через такой конструктор, независимо от x и y радиус устанавливается фиксированно согласно заданию на 10.
То есть, даже если мы создадим экземпляры с таким набором параметров:
new Circle(1, 2);
new Circle(0, -1);
new Circle(120, 3500);
Радиус всё равно должен быть 10.
this(y, y ,x); не годится, так как получается, что когда вызовется первый конструктор, установится:
x=y=5
y=y=тоже 5
radius=x=10
0