Задачу решил правильно, но не с первой попытки.
В задаче package com.javarush.task.task05.task0513; мы создаем метод public void initialize(Rectangle rectangle) и нам нужно указывать Rectangle rectangle = new Rectangle();
а в этой задаче мы создаем конструктор public Rectangle(Rectangle rectangle) и запись Rectangle rectangle = new Rectangle(); является уже ошибкой, почему?
Noob Plays
6 уровень
Почему не нужно писать Rectangle rectangle = new Rectangle();?
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Noob Plays
11 мая 2020, 07:52
понял спасибО!
0
ГоффMaster
9 мая 2020, 12:17решение
То же самое, другими словами:
Если ты создал класс и не прописал ни одного конструктора, то для создания объектов класса используется конструктор по умолчанию - это пустой конструктор без аргументов. поэтому Rectangle rectangle = new Rectangle(); работает, вызывается дефолтный конструктор.
Но если ты в классе создал хотя бы один конструктор. то дефолтный отменяется и при создании нового объекта используется один из твоих конструкторов. Если находится подходящий по набору параметров. А если не находится, то выдаётся ошибка. Поэтому если у тебя есть конструктор public Rectangle(Rectangle rectangle) и нет констурктора public Rectangle() , то при Rectangle rectangle = new Rectangle(); будет ошибка
+2
Axl NeferSky
9 мая 2020, 11:59полезный
В task0513 мы создаем перегруженные функции инициализации initialize, которые, по сути, никакого отношения к созданию объекта не имеют. В task0520 мы создаем перегруженные конструкторы. Конструктор указывается после ключевого слова new при создании объекта, то есть, в Вашем примере Rectangle rectangle = new Rectangle(); Вы вызываете конструктор по умолчанию Rectangle(). Собственно, раз в задаче Вы его перегружаете, то конструктора по умолчанию у класса больше нет (если Вы не создали его специально).
+1