Вызов конструкторов суперкласса в Java с помощью ключевого слова super

Вызов конструкторов суперкласса в Java с помощью ключевого слова super

Из подкласса можно вызывать конструктор, определенный в его суперклассе, используя следующую форму ключевого слова super:

где список_аргументов определяет любые аргументы, требующиеся конструкто­ру в суперклассе. Вызов метода super() всегда должен быть первым оператором, выполняемым в конструкторе подкласса.

В качестве примера, демонстрирующего применение метода super(), рассмо­трим следующую версию класса BoxWeight:

В данном примере метод super() вызывается с аргументами w, h и d из метода BoxWeight(). Это приводит к вызову конструктора Вох(), в котором поля width, height и depth инициализируются передаваемыми ему значениями соответству­ющих параметров.

Теперь эти значения не инициализируются в самом классе BoxWeight. В нем остается только инициализировать его собственное поле weight. В итоге эти поля могут, если требуется, оставаться закрытыми в классе Вох.

В приведенном выше примере метод super() вызывался с тремя аргументами. Конструкторы могут быть перегружаемыми, и поэтому метод super() можно вы­зывать, используя любую форму, определяемую в суперклассе.

Выполнен будет тот конструктор, который соответствует указанным аргументам. В качестве примера ниже приведена полная реализация класса BoxWeight, предоставляющая кон­структоры для разных способов создания параллелепипедов.

В каждом случае ме­тод super() вызывается с соответствующими аргументами. Обратите внимание на то, что члены width, height и depth объявлены в классе Вох как закрытые.

Эта программа выводит следующий результат:

Обратите особое внимание на следующий конструктор из класса BoxWeight:

Обратите также внимание на то, что методу super() передается объект типа BoxWeight, а не Вох. Но это все равно приводит к вызову конструктора Вох(Вox.ob).

Как отмечалось ранее, переменную из суперкласса можно использоватьдля ссылки на любой объект, унаследованный от этого класса.

Таким образом, объ­ект класса BoxWeight можно передать конструктору Вох(). Разумеется, классу Вох будут доступны только его собственные члены.

Советуем вам следующее видео для закреплении знаний: