Tout d'abord, jetons un coup d'œil à la définition concise de la surcharge et de l'écrasement (réécriture):
Surcharge de méthode: si deux méthodes ont le même nom de méthode mais que les paramètres sont incohérents, alors une méthode est une surcharge de l'autre méthode.
Remplacement de la méthode: Si une méthode est définie dans une sous-classe, son nom, son type de retour et sa signature de paramètre correspondent au nom, au type de retour et à la signature du paramètre d'une méthode dans la classe parent, alors on peut dire que la méthode de la sous-classe couvre la Méthodes de classe des parents
Concentrons-nous sur le problème de la couverture, en prenant le code suivant à titre d'exemple:
Public People {public String getName () {return "People";}} classe publique étend les gens {public String getName () {return "Student"; New People (); System.out.println (P.GetName ()); // Le résultat de l'exécution est Student S = New Student (); Le résultat est les élèves pp = new student ();Le résultat ci-dessus montre que la méthode GetName de la classe d'élèves écrase avec succès la méthode de la classe parent
Jetons un coup d'œil à la superposition des variables:
classe publique des gens {String Protected Name = "People";} Public Class Student étend les gens {String Protected Name = "Student";} Public Static Vo id (String [] Args) {People P = New People (); Out .println (p.name); // Le résultat de l'exécution est les personnes Student S = new Student (); System.out .println (pp.name); // Le résultat de l'exécution est les gens}En exécutant les résultats, j'ai constaté que la superposition des variables est en fait différente de la méthode.
Dans mes propres mots: la couverture des variables ne peut être considérée que comme une couverture à moitié cuite au plus.
Sinon, la conversion ascendant ne se produira pas si la perte de données se produit
People pp = new Student ();
Dans mon expérience personnelle: la couverture des variables est facile à faire des erreurs. Cela donne aux gens que les gens sont de retour à l'héritage de C ++ [ce n'est pas l'héritage de C ++ avec virtuel]
Enfin, regardons un autre morceau de code:
Public People {String Protected Name = "People"; Public String GetName () {RETOUR String [] Args) {People P = New People (); getName: :::::::::::::::::::::::::::::::::::- : :::::::::::::::::::::::::::::::::::- ::::::::::::::::::::::::::::: ()); // Le résultat de l'exécution est des personnes étudiantes pp = nouveau étudiant (); .println (pp.getName ()); // Le résultat de l'exécution est étudiant}De toute évidence, une telle couverture est la couverture la plus utile pour nous, car de cette manière, nous pouvons atteindre le but de résumer des objets en béton dans des objets généraux et un véritable polymorphisme.
Ce qui précède est juste mon opinion personnelle.