При написании подкласса мы по-прежнему можем объявлять переменные-члены. Особым случаем является то, что имя объявленной переменной-члена совпадает с именем переменной-члена, унаследованной от родительского класса, и объявленный тип может быть другим. case подкласс скроет унаследованные переменные-члены.
Характеристики подклассов, скрывающих унаследованные переменные-члены, следующие:
(1) Объекты и методы подкласса, определенные самим подклассом, используют переменные-члены с тем же именем, что и у родительского класса, которое ссылается на переменную-член, переобъявленную подклассом.
(2) Объекты подкласса по-прежнему могут вызывать методы, унаследованные от родительского класса, для работы с переменными-членами, скрытыми подклассом. Другими словами, переменные-члены, которыми управляют методы, унаследованные от подкласса, должны быть переменными-членами, унаследованными или скрытыми подклассом.
Уведомление:
Методы, унаследованные от подклассов, могут работать только с унаследованными и скрытыми переменными-членами подклассов. Метод, вновь определенный подклассом, может работать с переменными-членами, унаследованными подклассом и вновь объявленными подклассом, но он не может работать с переменными-членами, скрытыми подклассом.
Подклассы могут скрывать унаследованные методы, переопределяя их. Переопределение метода также называется переопределением метода. Если подкласс может наследовать метод от родительского класса, то подкласс имеет право переопределить этот метод. Переопределение метода относится к определению метода в подклассе. Тип этого метода соответствует типу метода родительского класса или подтипу типа метода родительского класса, а также имени метода. количество параметров, тип параметров и методы родительского класса точно такие же. Метод, определенный таким образом подклассом, называется методом, переопределенным подклассом, и не является новым методом.
Подклассы могут скрывать унаследованные методы посредством переписывания методов и изменять состояние и поведение родительского класса на свои собственные. Если метод родительского класса f() может быть унаследован дочерним классом, дочерний класс имеет право переопределить f(). Как только дочерний класс переопределяет метод родительского класса f(), унаследованный метод f() скрывается. Тогда дочерний класс имеет право переопределить f(). Когда объект класса вызывает метод f(), он должен вызвать переопределенный метод f(). Если подкласс не переопределяет, а наследует метод f() родительского класса, то, конечно, объект, созданный подклассом, может вызывать метод f(), но поведение, производимое методом f(), такое же, как и у что родительского класса.
Переопределенный метод может не только работать с унаследованными переменными-членами и вызывать унаследованные методы, но также может работать с недавно объявленными переменными-членами подкласса и вызывать другие недавно определенные методы, но он не может работать с переменными-членами и методами, скрытыми подклассом. Если подкласс хочет использовать скрытые методы или переменные-члены, он должен использовать ключевое слово super.
Уведомление:
При переопределении метода родительского класса вы не можете уменьшить права доступа метода, но можете увеличить права доступа. Порядок модификаторов ограничения доступа от высоких прав доступа к низким: публичный, защищенный, дружественный, дружественный. частный. Например: подкласс переопределяет метод f родительского класса. Разрешение доступа этого метода в родительском классе является защищенным уровнем. При переопределении подкласса уровень не может быть ниже защищенного.