Вызов конструктора из конструктора

  • 4
  • Недоступна
Вызов конструктора из другого конструктора — вполне естественная операция, хотя возможно сейчас вам кажется, что это сложный акробатический этюд. Внимательно изучите программу, разберитесь, что она делает, и исправьте конструктор с двумя параметрами так, чтобы он вызвал другой конструктор с радиусом 10. Какой? Догадайтесь!)
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (116)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Andrey Malikov6 уровень, Новосибирск
позавчера, 13:12
Решил! Всего одну строку добавил! Прочитал тут https://javarush.ru/groups/posts/793-vihzov-konstruktora-iz-konstruktora
Андрей6 уровень, Москва
2 декабря, 15:14
тоже решил, но до конца не понял как )))
Денис6 уровень, Москва
30 ноября, 23:19
Вчитывайтесь в задание)) Не сказано, что он должен присваивать значение x
Максим9 уровень, Новосибирск
25 ноября, 16:44
http://developer.alexanderklimov.ru/android/java/constructor.php раздел "Вызов перегруженных конструкторов через this()"
Илья10 уровень, Алматы
21 ноября, 05:20
7 попыток только из-за того, что надо было написать 10.0, а не просто 10. Хотя в коде везде обычные числа передаются...
Andrey Malikov6 уровень, Новосибирск
позавчера, 13:12
у меня просто 10 сработало
Anatoliy9 уровень, Печора
20 ноября, 14:16
Как обычно условие на высоте) Догадайся сам что от тебя требуется)
Леонид8 уровень, Сургут
15 ноября, 10:37
ВНИМАТЕЛЬНО изучить конструктор по умолчанию и все будет понятно и просто
NK6 уровень, Киев
20 ноября, 16:36
Хорошая подсказка, спасибо. Пока читал, наконец-то понял для чего вообще этот конструктор нужен. А то задач уже кучу выполнил, а смысла так и не улавливал
Kirill10 уровень, Краснодар
6 ноября, 11:35
В этой задаче показывается, что использование вызова this позволяет не дублировать код в каждом конструкторе. Нам в задачи дается главный конструктор, ну или конструктор по умолчанию, суть не в этом. А в том, что любой конструктор, который будет вызван первым с несколькими параметрами или вообще без них, должен инициировать вызов главного конструктора для создания объекта с тремя переменными.
Елена Попова10 уровень
3 ноября, 09:57
Я не поняла почему запись во втором конструкторе this.x = x; this.y = y; this.radius = 10; не проходит?


Codama7 уровень, Москва
8 ноября, 17:18
из-за этого пункта: Конструктор с двумя параметрами должен вызывать другой конструктор, передав в него верные значения параметров.
Vladimir6 уровень, Нижний Новгород
14 ноября, 19:47
Мои видение - в классе запускается первым конструктор по умолчанию -(), затем от вызывает конструктор с тремя параметрами (если бы первый конструктор имел бы 4 параметра прога бы не работала)... после этого цикла объект anotherCircle снова запускает класс Circle и он (как и сказал Кирилл) вызывает конструктор соответствующий кол-ву параметров - 2, далее наш второй по счету конструктор инициализирует объект anotherCircle, вызывая первый по счету конструктор с тремя параметрами передавая в него полученные x,y и инициализированный radius, без последнего снова все рухнет...так короче и больше для собственного понимания))
Кирилл9 уровень, Брест
28 октября, 18:09
Я понял так: 1)В начале программа вызывает конструктор без параметров(new Circle()): Circle circle = new Circle(); В классе Circle конструктор без параметров(с пустыми скобками) , через this(5,5,1), присваивает значения трем переменным класса по порядку(x = 5, y = 5, radius = 1). 2)Далее программа выводит на экран данные первого экземпляра circle. 3)Создается второй экземпляр anotherCircle и он уже, при вызове конструктора Circle, передает в этот самый конструктор два параметра - 10 и 5. Компилятор ищет в классе Circle нужный конструктор(с двумя параметрами, ведь передали два параметра) и присваивает параметрам конструктора(не параметрам класса!) значения x = 10, y = 5; Далее, мы должны сообщить программе что параметры, переданные в этот конструктор(а именно х = 10 и y = 5) должны быть присвоены параметрам класса, но при этом, по условиям задачи, мы должны еще и присвоить значение(инициализировать) для переменной radius. Поэтому мы пишем this(x,y,10); Эта запись присваивает значение переданного х(10) к х класса Circle, значение переданного y(5) к y класса CIrcle и оставшееся число 10(которое мы написали вручную) передается в переменную radius класса Circle; 4)Программа выводит данные на экран через println; В общем, в предыдущих задачках мы писали в конструкторах и инициализаторах, например: this.age = age;(значение переменная age, переданная в конструктор/инициализатор, присваивается переменной age класса); this.heigth = height;(тоже что и с age); а теперь это можно делать одной записью this(переменная_конструктора1, переменная_конструктора2,.......,переменная_конструктораN);
Vladimir6 уровень, Нижний Новгород
14 ноября, 19:46
Направление мысли верно! Я бы только сформулировал так - что в классе запускается первым конструктор по умолчанию -(), затем от вызывает конструктор с тремя параметрами (если бы первый конструктор имел бы 4 параметра прога бы не работала)... после этого цикла объект anotherCircle снова запускает класс Circle и он (как и сказал Кирилл) вызывает конструктор соответствующий кол-ву параметров - 2, далее наш второй по счету конструктор инициализирует объект anotherCircle, вызывая первый по счету конструктор с тремя параметрами передавая в него полученные x,y и инициализированный radius, без последнего снова все рухнет...так короче и больше для собственного понимания))