JavaRush /Java блог /Архив info.javarush /Конструкторы, процесс создания объекта
MariaM
24 уровень

Конструкторы, процесс создания объекта

Статья из группы Архив info.javarush
Интересный момент с Интуита: можно использовать this не только как обращение к полям объекта класса, но и как обращение к конструктору (который вообще-то не имеет имени и извне доступен только с помощью ключевого слова new): public class Vector { private int vx, vy; protected double length; public Vector(int x, int y) { super(); vx=x; vy=y; length=Math.sqrt(vx*vx+vy*vy); } public Vector(int x1, int y1, int x2, int y2) { super(); vx=x2-x1; vy=y2-y1; length=Math.sqrt(vx*vx+vy*vy); } } можно записать короче: public class Vector { private int vx, vy; protected double length; public Vector(int x, int y) { super(); vx=x; vy=y; length=Math.sqrt(vx*vx+vy*vy); } public Vector(int x1, int y1, int x2, int y2) { this(x2-x1, y2-y1); //можно использовать даже this(), если существует такой конструктор в этом классе!!! } } Также первой строкой любого конструктора должно идти обращение к конструктору родительского объекта (super() ). Если такой строки нет, то компилятор по умолчанию ее добавляет с пустыми параметрами. Но! Если у родительского объекта нет конструктора с пустыми параметрами, то произойдет ошибка компиляции. Соответственно, создание любого объекта происходит как инициализация всех родителей, а затем возвращение ссылки на итоговый объект.
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ