Ao escrever uma subclasse, ainda podemos declarar variáveis de membro. Um caso especial é que o nome da variável de membro declarada é igual ao nome da variável de membro herdada da classe pai, e o tipo declarado pode ser diferente. case, a subclasse ocultará as variáveis de membro herdadas.
As características das subclasses que ocultam variáveis-membro herdadas são as seguintes:
(1) Os objetos e métodos da subclasse definidos pela própria subclasse operam variáveis-membro com o mesmo nome da classe pai, que se refere à variável-membro redeclarada pela subclasse.
(2) Os objetos da subclasse ainda podem chamar métodos herdados da classe pai para operar variáveis-membro ocultas pela subclasse. Ou seja, as variáveis-membro operadas por métodos herdados pela subclasse devem ser variáveis-membro herdadas ou ocultadas pela subclasse.
Perceber:
Os métodos herdados de subclasses só podem operar em variáveis de membros herdadas e ocultas de subclasses. Um método recentemente definido por uma subclasse pode operar em variáveis-membro herdadas pela subclasse e recentemente declaradas pela subclasse, mas não pode operar em variáveis-membro ocultas pela subclasse.
As subclasses podem ocultar métodos herdados, substituindo-os. A substituição de método também é chamada de substituição de método. Se uma subclasse puder herdar um método da classe pai, então a subclasse terá o direito de substituir esse método. A substituição de método refere-se à definição de um método em uma subclasse. O tipo deste método é consistente com o tipo do método da classe pai ou um subtipo do tipo do método da classe pai e o nome do método, o. número de parâmetros, o tipo dos parâmetros e os métodos da classe pai são exatamente os mesmos. O método definido desta forma por uma subclasse é chamado de método substituído pela subclasse e não é um método novo.
As subclasses podem ocultar métodos herdados por meio da reescrita de métodos e alterar o estado e o comportamento da classe pai para os seus próprios. Se o método f() da classe pai puder ser herdado pela classe filha, a classe filha terá o direito de substituir f(). Uma vez que a classe filha substitua o método f() da classe pai, o método herdado f() será oculto. Então a classe filha tem o direito de substituir f(). Quando um objeto de classe chama o método f(), ele deve chamar o método substituído f(). Se a subclasse não substituir, mas herdar o método f() da classe pai, então é claro que o objeto criado pela subclasse pode chamar o método f(), mas o comportamento produzido pelo método f() é o mesmo que o da classe pai.
O método substituído pode não apenas operar variáveis de membro herdadas e chamar métodos herdados, mas também pode operar variáveis de membro recém-declaradas da subclasse e chamar outros métodos recém-definidos, mas não pode operar as variáveis de membro e métodos ocultos pela subclasse. Se uma subclasse quiser usar métodos ocultos ou variáveis de membro, ela deverá usar a palavra-chave super.
Perceber:
Ao substituir um método de uma classe pai, você não tem permissão para reduzir os direitos de acesso do método, mas pode aumentar os direitos de acesso. A ordem dos modificadores de restrição de acesso de direitos de acesso altos para baixos é: público, protegido, amigável,. privado. Por exemplo: uma subclasse substitui o método f da classe pai. A permissão de acesso deste método na classe pai é o nível protegido. Quando a subclasse é substituída, o nível não pode ser inferior ao protegido.