ЧЕТВЕРТАЯ ПРОГРАММА

Конструкторы.
Сегодня мы рассмотрим новую тему, но про то что было в первых четырех проектах не стоит забывать.
Открываем наш проект с коробками.
После последних изменений наш проект стал меньше, передавать значения в метод стало проще, но хочется, чтобы код программы был оптимизирован и максимально безопасным. Именно поэтому в java разработали КОНСТРУКТОРЫ.
КОНСТРУКТОРЫ в java позволяют инициализировать объект при их создании.
Такая автоматическая инициализация осуществляется с помощью конструктора.
Конструктор создается внутри класса, имя конструктора совпадает с именем класса.
Задача конструктора инициализировать объект во время его создания.
Синтаксис конструктора:
Class Box   // класс
double w;    //объявление переменной
double h;     //объявление переменной
double d;     //объявление переменной
Box () {}     //конструктор
Конструктор не нужно вызывать в отличии от метода не нужно вызывать. Он инициализируется сам в момент создания. Конструкторы не имеют возвращающий тип так как по умолчанию в java тип возвращения определен классом. Именно конструктор инициализирует внутреннее состояние объекта таким образом, чтобы код, создающий экземпляр, с самого начала содержал полностью инициализированный, пригодный к употреблению объект.

Переходим в class Box и создаем конструктор, потом сверяем с моим скриншотом:

В строке №8 мы создали конструктор, как видите имя конструктора соответствует имени класса, в котором он создан. Конструктор принимает параметры, тип которых описывает класс Box.
Переходим в class Dispatcher и выполняем там изменения. А именно, передаем параметры во время создания объектов.
Но после компиляции у вас не будет считаться объем!!! ПОЧЕМУ???

Это происходит потому что ваша программа не понимает, что делать с переменными, которые мы передали с помощью конструктора. Чтобы наша программа работала нормально и не давала сбоев переопределим наши параметры. Мы, как бы скажем «конструктор присвой полученные значения переменной volume…». Смотрите (изменения производим в классе Box, как вы уже догадались):
Теперь попробуйте скомпилировать приложение, и вы увидите долгожданный ответ.
Но более правильной запись и обработка параметров в классе Box будет выглядеть так:

ВАЖНОЕ!
Конструктор - это член класса, который используется для создания объектов класса. Конструктор имеет такое же название, как и класс, но не имеет возвращаемого значения. Конструктор вызывается в месте выполнения оператора new.
P.S. думаю вам совсем не сложно будет найти самую большую коробку из четырех созданных.
НО ЭТО ЕЩЕ НЕ ВСЕ!!!
Создание ссылок на объект
Ранее мы рассматривали зарезервированные слова… там есть «волшебное слово» this – это. В java – слово this означает объектную ссылку. Или ссылку на объект. Зачем же оно нужно? Мы только что увидели, как уменьшается и оптимизируется код программы при использовании конструктора, но мы использовали не так много объектов и вычисляли только одно значение. А может сложиться такая ситуация, когда метод будет ссылаться на вызывающий его объект. This им можно пользоваться в теле любого метода для ссылки на текущий объект. Это означает, что ключевое слово this
всегда служит ссылкой на объект, для которого был вызван метод. Ключевое слово
this можно использовать везде, где допускается ссылка на объект типа текущего
класса.
Как же оно применяется? Применим его в конструкторе. Смотрите:
 А теперь разберем подробно. Ранее мы «говорили» конструктору, что делать с переменными, но наша «просьба» была не совсем безопасной, применяя слово this мы не даем шанса ошибиться java. Потому что именно этот параметр следует передать в метод для обработки. Правильно следует писать код программы как показано на последнем скриншоте.

Немає коментарів:

Дописати коментар