Конструктор

  • 4
  • Недоступна
Разбор чужого кода и поиск ошибок — как вам это нравится?.. Каков бы ни был ответ на этот вопрос, без этого не обойтись, и лучший способ выжить в программистском мире — полюбить это делать. Итак, вот вам программа, разберитесь, что она делает, найдите и исправьте ошибку. При этом метод main остается неприкосновенным, неизменным.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (211)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Максим7 уровень
Thursday, 23:36
А почему нет необходимости писать this. перед color в 17 строке, как это делалось ранее?
Sudoku7776 уровень, Москва
23 June, 12:50
Задача конечно простоая ,но один момент не понятен public void Circle() { color = new Color(); } что вот это ?!
Георгий Багаев9 уровень, Санкт-Петербург
15 June, 19:10
Хорошая задача. Научиться находить чужие ошибки очень полезно - потом быстрее будешь находить свои.
Crew Dragon 9 уровень
8 June, 08:50
задача и в самом деле легкая. Но что значит на 16 строчке "color = new Color();"
Илья19 уровень, Санкт-Петербург
7 June, 19:33
Ох, как же долго я искал решение, наверно минут 10 ушло... А всё так просто, так просто...
Vladimir Shevchenko6 уровень, Днепр
Wednesday, 14:50
Ни хрена себе долго, так просто так просто, я пол дня не мог въехать, что не так!
Romici8 уровень
1 June, 13:05
Я угорал когда нашел решение и прошел валидацию))) строка 16! Я искал трудные пути а тут...
Сергей12 уровень, Санкт-Петербург
30 May, 00:04
а что, если бы этот колор вообще не использовать, ну и ессно поле объекта circle убрать, а только сеттер и геттер оставить компиляция бы не прошла? это искуственно усложненная задача?
Дмитрий8 уровень
27 May, 11:41
Для тех, кто как и я увидел незнакомые конструкции и затупил. Класс - это шаблон (набор параметров) каждого созданного в нем объекта. Все эти параметры (обозванные ранее полями) должны быть заполнены. Переменная color с 8й строки и есть такой параметр (свойство) для объектов класса Circle. То есть у каждого круга должен быть цвет. Стоит отметить, что у этой переменной тип "Color", это значит, что данная переменная будет хранить в себе ни числа и ни строки, а ссылку на объект класса Color . То есть тип такой переменной будет иметь название класса, в котором будет создан объект. И так, в методе main создается новый круг Circle circle = new Circle(); с пустыми скобками - это значит, что будет вызван "конструктор по умолчанию" без входных значений. Данный конструктор служит для присваивания новосозданному объекту параметров\свойств. У объектов класса Circle один такой параметр - color. И ему внутри конструктора присваивается не конкретное значение цвета, а ссылка на новый объект класса Color, свойством которого, в свою очередь, и будет являться конкретное значение цвета. Это значение в себе будет хранить переменная класса Color description, что переводится как "описание". color.setDescription("Red"); - данная конструкция запускает метод, который занесет значение "Red" в переменную "description", которая является свойством конкретного объекта "color", потому что мог бы быть и еще один объект "color1" например, у него переменная "description" будет иметь свое значение. А эта запись circle.color.setDescription("Red"); - конкретизирует: цвет какого именно круга нужно назвать "Red", в данном случае это круг "circle", а мог бы быть и "circle1" и "circle2" и т.д. В задании требуется найти ошибку, связанную с "конструктором по умолчанию", мы теперь знаем что 16я строка это точно конструктор, но вот уж больно он похож на метод..
Alexander11 уровень, Днепр
27 May, 00:22
А конструкторы типа не имеют 😜
Максим Дудин8 уровень, Калининград
28 May, 20:49
вот же блин.... и всё? А где же this. (что-нибудь там?)= (чему-нибудь там); P.S. там внизу написано... ((
Julia Schreiber14 уровень, Leipzig
22 May, 00:02
написала один коментарий в main --> валидация не прошла.