Размер шрифта
-
+

Java за неделю. Вводный курс - стр. 44

Для внесения изменений и дополнений мы воспользуемся механизмом наследования. Создадим подкласс MyChildClass, в котором опишем дополнительный метод sum (). Подкласс полностью наследует открытые поля и методы суперкласса, поэтому метод sum () свободно обращается к полю number. Это поле объявлено и существует, хотя и не упомянуто в явном виде при описании подкласса.

Далее, в главном методе программы мы создаем объект суперкласса objParent и объект подкласса objChild. Еще раз подчеркну, что это абсолютно равноправные и независимые объекты. Разница лишь в том, что объект objChild располагает методом sum (), которого нет у объекта objParent.

Убедимся в том, что свойства объектов именно такие, как ожидалось. Сначала выведем на печать содержимое полей объекта objParent:

objParent.showNumber ();

objParent.showText ();

Затем выведем на печать содержимое полей объекта objChild:

objChild.showNumber ();

objChild.showText ();

Результат выполнения этих блоков команд будет одинаковым, потому что реализовано наследование полей:

5

Hello

5

Hello

Теперь для объекта objChild вызовем метод sum () и выведем результат работы метода на печать. Как видите, подкласс MyChildClass успешно расширил суперкласс MyParentClass при помощи нового метода. Благодаря наследованию мы можем произвольно редактировать дополнительные поля и методы, не затрагивая исходный суперкласс.


7.1.1 Конструктор подкласса

Давайте вспомним, что такое конструктор класса, о котором подробно говорилось в разделе 6.2.3. Зачастую при создании объекта необходимо присвоить его полям начальные значения. Поскольку можно создать несколько объектов одного класса, то их поля могут быть инициализированы разными значениями. Для этого в классе должен быть описан специальный метод (конструктор), который срабатывает в момент создания объекта, получает аргументы и выполняет нужные действия.

При создании объекта подкласса ситуация сложнее – сначала вызывается конструктор суперкласса, и мы должны как-то передать ему аргументы. Для этого в теле конструктора подкласса первой командой следует указать вызов конструктора суперкласса при помощи ключевого слова super с круглыми скобками. В скобках указывают аргументы, которые передаются конструктору суперкласса. Если аргументов нет, оставляют пустые скобки.

В листинге 7.2 приведен пример использования конструктора подкласса. Обратите внимание на то, как происходит обращение к полям при помощи нового для вас ключевого слова this.


Листинг 7.2 Использование конструктора подкласса

// описание суперкласса

class MyParentClass {

Страница 44