Использование ключевого слова super

В предшествующих примерах классы, производные от класса Box, были реализованы не столь эффективно и надежно, как могли бы. Например, конструктор BoxWeight явно инициализирует поля width, height и depth класса Box. Это не только ведет к дублированию кода суперкласса, что весьма неэффективно, но и предполагает наличие у подкласса доступа к этим членам. Однако в ряде случаев придется создавать суперкласс, подробности реализации которого доступны только для него самого (т.е. с приватными членами данных). В этом случае подкласс никак не сможет самостоятельно непосредственно обращаться или инициализировать эти переменные. Поскольку инкапсуляция — один из главных атрибутов ООП, не удивительно, что Java предлагает решение этой проблемы. Во всех случаях, когда подклассу нужно сослаться на его непосредственный суперкласс, это можно выполнить с помощью ключевого слова super.

Ключевое слово super имеет две общих формы. Первую используют для вызова конструктора суперкласса, а вторую — для обращения к члену суперкласса, скрытому членом подкласса. Рассмотрим обе формы.