Surcharge : plusieurs fonctions avec le même nom mais le même nom de méthode mais des paramètres différents
Remarque : 1. Différents paramètres signifie qu'il existe au moins une différence dans le type de paramètre, le nombre de paramètres et l'ordre des paramètres.
2. Les valeurs de retour, les exceptions et les modificateurs d'accès ne peuvent pas être utilisés comme conditions de surcharge (car pour les appels anonymes, une ambiguïté se produira, par exemple : void a () et int a(), si a() est appelé, une ambiguïté se produira)
3.La méthode principale peut également être surchargée
Override : la sous-classe réécrit la méthode de la classe parent, exigeant que le nom de la méthode et le type de paramètre soient exactement les mêmes (les paramètres ne peuvent pas être des sous-classes), que la valeur de retour et l'exception soient plus petites ou identiques à celles de la classe parent (qui c'est-à-dire qu'il s'agit de sous-classes de la classe parent), et les modificateurs d'accès sont plus petits que ceux de la classe parent. La classe parent est plus grande ou identique.
Deux pareils, deux petits et un grand
Remarque : les méthodes d'instance de sous-classe ne peuvent pas remplacer les méthodes statiques de classe parent ; les méthodes statiques de sous-classe ne peuvent pas remplacer les méthodes d'instance de classe parent (une erreur se produit lors de la compilation).
Masqué : lorsque la classe parent et la sous-classe ont des attributs ou des méthodes portant le même nom, l'attribut ou la méthode de la classe parent portant le même nom est manquant dans la forme, mais existe toujours.
Remarque : En cas de masquage, quelle que soit la classe du type de déclaration, les propriétés ou méthodes de la classe correspondante seront appelées et la liaison dynamique n'aura pas lieu.
Il n'existe qu'une seule forme de masquage de méthode, c'est-à-dire que la même méthode statique existe dans la classe parent et dans la sous-classe.
Les propriétés peuvent uniquement être masquées et non écrasées
Les variables d'instance/variables statiques de sous-classe peuvent masquer les variables d'instance/statiques de la classe parente. En résumé, les variables peuvent être masquées de manière croisée.
La différence entre cacher et couvrir :
Attributs cachés, une fois la sous-classe forcée dans la classe parent, les attributs de la classe parent sont accessibles.
La méthode remplacée, une fois la conversion forcée de la sous-classe en classe parent, appelle toujours la méthode de la sous-classe elle-même.
Étant donné que la couverture est liée dynamiquement et est soumise au RTTI (identification du type au moment de l'exécution, inspection du type au moment de l'exécution), le masquage n'est pas soumis au RTTI. En résumé, le RTTI sert uniquement à la couverture et non au masquage.
Circonstances particulières :
1. Les propriétés modifiées par final peuvent être masquées, mais elles ne peuvent pas être attribuées, c'est-à-dire qu'elles ne peuvent pas être attribuées avec =. On dit en ligne que les propriétés finales ne peuvent pas être modifiées. Cette instruction n'est pas exacte, car après une variable de type référence. est modifié avec final, il ne peut tout simplement pas être modifié. Pointe vers d'autres objets, mais peut changer sa propre valeur. Il peut être testé avec ArrayList. L'attribut final peut être initialisé au moment de l'exécution, mais l'instruction d'initialisation doit apparaître.
2.Les méthodes finales modifiées ne peuvent pas être remplacées et peuvent être surchargées
3. Les classes finales modifiées ne peuvent pas être héritées
4. La méthode privée ajoute implicitement final