Schauen wir uns zunächst die kurze Definition von Überladung und Überschreibung an (Umschreiben):
Methodenüberlastung: Wenn zwei Methoden den gleichen Methodennamen haben, die Parameter jedoch inkonsistent sind, ist eine Methode eine Überladung der anderen Methode.
Überschreiben der Methode: Wenn eine Methode in einer Unterklasse definiert ist, entsprechen der Name, der Rückgabetyp und die Parametersignatur mit dem Namen, der Rückgabe -Typ und der Parametersignatur einer Methode in der übergeordneten Klasse, dass die Methode der Unterklasse die abdeckt Elternklassenmethoden
Konzentrieren wir uns auf das Problem mit der Berichterstattung und nehmen Sie den folgenden Code als Beispiel:
public class people {public String GetName () {return "people"; New People (); Ergebnis ist Studenten pp = neuer Schüler ();Das obige Ergebnis zeigt, dass die GetName -Methode der Schülerklasse erfolgreich die Methode der Elternklasse überschreibt
Schauen wir uns die Überlagerung der Variablen an:
public class people {protected String name = "people"; out .println (P.Name); // Das Run -Ergebnis ist people student s = new student (); System.out .println (S.Name); // Das Run -Ergebnis ist people}}Durch das Ausführen der Ergebnisse stellte ich fest, dass sich die Überlagerung der Variablen tatsächlich von der Methode unterscheidet.
In meinen eigenen Worten: Die Abdeckung von Variablen kann höchstens als halbgebackene Abdeckung angesehen werden.
Andernfalls tritt eine Aufnahme nicht auf, wenn Datenverlust auftritt
People pp = new Student ();
Nach meiner persönlichen Erfahrung: Die Berichterstattung von Variablen ist leicht zu fehlern. Es gibt die Menschen wie die Erbe von C ++ zurück [dies ist nicht die Vererbung von C ++ mit virtuell]
Schließlich schauen wir uns ein weiteres Stück Code an:
public class people {protected String name = "people"; String [] args) {people p = new people (); GetName :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: ()); // Das Run -Ergebnis ist Schüler pp = new student (); .println (pp.getName ()); // Das Run -Ergebnis ist Student}Offensichtlich ist eine solche Abdeckung die nützlichere Abdeckung für uns, da wir auf diese Weise den Zweck erreichen können, konkrete Objekte in allgemeine Objekte und reales Polymorphismus abzuziehen.
Das Obige ist nur meine persönliche Meinung.