Sobrecarga: múltiplas funções com o mesmo nome, mas com o mesmo nome de método, mas com parâmetros diferentes
Nota: 1. Parâmetros diferentes significam que há pelo menos uma diferença no tipo de parâmetro, número de parâmetros e ordem dos parâmetros.
2. Valores de retorno, exceções e modificadores de acesso não podem ser usados como condições para sobrecarga (porque para chamadas anônimas ocorrerá ambiguidade, por exemplo: void a () e int a(), se a() for chamado, ocorrerá ambiguidade)
3. O método principal também pode estar sobrecarregado
Override: A subclasse reescreve o método da classe pai, exigindo que o nome do método e o tipo de parâmetro sejam exatamente iguais (os parâmetros não podem ser subclasses), o valor de retorno e a exceção sejam menores ou iguais aos da classe pai (que isto é, são subclasses da classe pai) e os modificadores de acesso são menores que os da classe pai. A classe pai é maior ou igual.
Dois iguais, dois pequenos e um grande
Nota: Os métodos de instância de subclasse não podem substituir métodos estáticos de classe pai;
Oculto: quando a classe pai e a subclasse possuem atributos ou métodos com o mesmo nome, o atributo ou método da classe pai com o mesmo nome está faltando no formulário, mas na verdade ainda existe.
Nota: Quando ocorre a ocultação, qualquer que seja a classe do tipo de declaração, as propriedades ou métodos da classe correspondente serão chamados e a ligação dinâmica não ocorrerá.
Existe apenas uma forma de ocultação de método, ou seja, o mesmo método estático existe na classe pai e na subclasse
As propriedades só podem ser ocultadas, não substituídas
Variáveis de instância/variáveis estáticas da subclasse podem ocultar as variáveis de instância/estáticas da classe pai. Em resumo, as variáveis podem ser ocultadas de forma cruzada.
A diferença entre esconder e cobrir:
Atributos ocultos, depois que a subclasse é forçada para a classe pai, os atributos da classe pai são acessados.
O método substituído, depois que a subclasse é forçada a ser convertida na classe pai, ainda chama o método da própria subclasse.
Como a cobertura é vinculada dinamicamente e está sujeita ao RTTI (identificação do tipo de tempo de execução, inspeção do tipo de tempo de execução), a ocultação não está sujeita ao RTTI. Em resumo, o RTTI serve apenas para cobertura, não para ocultação.
Circunstâncias especiais:
1. As propriedades modificadas por final podem ser ocultadas, mas não podem ser atribuídas, ou seja, não podem ser atribuídas com =. Diz-se online que as propriedades finais não podem ser modificadas. Esta afirmação não é precisa, porque após uma variável de tipo de referência. é modificado com final, ele simplesmente não pode ser modificado aponta para outros objetos, mas pode alterar seu próprio valor. O atributo final pode ser inicializado em tempo de execução, mas a instrução de inicialização deve aparecer.
2. Os métodos modificados finais não podem ser substituídos e podem ser sobrecarregados
3. As classes finais modificadas não podem ser herdadas
4. O método privado adiciona implicitamente final