Когда мы создаем объект подкласса, он должен учитывать все функции-члены и переменные-члены, определенные в суперклассе.Может возникнуть случай, когда некоторая переменная-член может быть инициализирована в некоторых конструкторах суперкласса. Следовательно, когда мы создаем объект подкласса, все конструкторы в соответствующем дереве наследования вызываются сверху вниз.
В частности, когда переменная определена как protected он всегда будет доступен в подклассе независимо от того, находится ли подкласс в том же пакете или нет .Теперь из подкласса, если мы вызываем функцию суперкласса для печати значения этой защищенной переменной (которая может быть инициализирована в конструкторе суперкласса), мы должны получить правильное инициализированное значение. Поэтому все конструкторы суперкласса вызываются.
Внутренне Java вызывает super () в каждом конструкторе.Поэтому каждый конструктор подкласса вызывает свой конструктор суперкласса, используя super (), и, следовательно, они выполняются сверху вниз.
Примечание: функции могут быть переопределены, а не переменные.