Название | Java за неделю. Вводный курс |
---|---|
Автор произведения | Валерий Станиславович Яценков |
Жанр | Математика |
Серия | |
Издательство | Математика |
Год выпуска | 0 |
isbn | 9785449046840 |
System.out.println (»\nСвойства второго объекта»);
objSecond.show ();
}
}
В этом примере мы описали метод с именем set () для присвоения значений полям объекта. Напомним, что такой метод принято называть «сеттер». Если в качестве аргумента сеттеру передано целое число, то он присваивает значение числовому полю. Если передано символьное значение, то оно присваивается символьному полю. Наконец, если переданы оба значения, то они присваиваются обоим полям в соответствии с их типом.
Обратите внимание, как реализована обработка вызова сеттера без аргументов. Мы захотели, чтобы в этом случае полям были присвоены значения по умолчанию: целочисленное 5 и символьное «A». Поэтому внутри сеттера без аргументов вызывается сеттер с двумя аргументами. В свою очередь, внутри сеттера для двух аргументов поочередно вызываются сеттеры для целочисленного аргумента и символьного аргумента. Со стороны это выглядит так, словно метод несколько раз вызывает сам себя. Но вы уже знаете, что на самом деле это разные методы с одинаковым именем. Допустимость таких конструкций – достоинство языка Java, позволяющее писать мощный и легко читаемый код. В нашем примере вложенная структура вызовов выглядит излишней, потому что мы используем очень простые методы – казалось бы, проще присвоить значения полям непосредственно в вызванном сеттере. Но в реальном программировании, когда каждый метод состоит из сотен строк кода, намного выгоднее вызвать уже описанный и отлаженный метод внутри другого метода, чем дублировать описание.
В главном классе программы мы создаем два объекта класса MyClass. Полям первого объекта мы присваиваем значения в явном виде. Полям второго объекта присваиваем значения по умолчанию. Затем мы выводим значения полей на печать.
Что произойдет, если вы попытаетесь в программе вызвать метод с аргументом, который не подходит ни одному из описаний методов класса? Ваша ошибка будет обнаружена и заблокирована средой NetBeans еще в процессе ввода текста программы. Кроме того, стоит вам ввести имя перегружаемого метода, как NetBeans покажет подсказку с перечислением доступных аргументов этого метода.
6.2.3 Конструктор класса
В листинге 6.4 мы использовали специальный метод (сеттер) для присвоения значений полям объекта. Но для присвоения начальных значений в момент создания объекта существует более простой и удобный механизм – конструктор. Это метод, автоматически вызываемый при создании объекта класса. В конструкторе определены действия, которые необходимо выполнить при создании объекта. Если конструктор не задан в явном виде, то при создании объекта используется так называемый конструктор по умолчанию. Когда в рассмотренных ранее примерах мы создавали объекты, то в этот момент использовался конструктор по умолчанию, который не выполнял никаких действий кроме выделения памяти под объект.
Если в описании конструктора применяются аргументы, то при создании объекта их необходимо передать конструктору, например:
MyClass obj=new MyClass (10, «A»);
Если аргументы конструктора не предусмотрены, то скобки остаются пустыми, и такая запись ничем не отличается от уже знакомого вам вызова конструктора по умолчанию:
MyClass obj=new MyClass ();
Если в классе описан хотя бы один конструктор, то конструктор по умолчанию становится недоступен. В этом случае вы можете вызывать конструктор только