Viele Schüler sind verwirrt über Überlastung und Überschreibung. Es wird empfohlen, sich konzeptionelles Wissen nicht auswendig zu lernen, sondern es zu verstehen und auswendig zu lernen.
Geben Sie mir zunächst meine Definition:
Überladung: In derselben Klasse oder Klassen mit Vererbungsbeziehungen hat eine Gruppe von Namen dieselben Methodengruppen mit unterschiedlichen Parametern. Die Essenz ist die Bezeichnung für verschiedene Methoden.
Überschreiben: Zwischen zwei Klassen, die eine Vererbungsbeziehung haben, werden die in der übergeordneten Klasse vorhandenen Methoden in der Unterklasse neu definiert. Das Wesentliche besteht darin, unterschiedliche Implementierungen für dieselbe Methode bereitzustellen.
Schauen wir uns zunächst Überladungsbeispiele an:
public class OverloadParent{ public String getPerson(String name){ return “personA” + name; } public String getPerson(int age){ return “personB” ; } public String getPerson(String name,int age){ return “personC”; } public void getPerson(String name){ System.out.println(“我是重载的方法吗?”); } }
public class OverloadChildextends OverloadParent { public void getPerson(double money){ Sytem.out.println(“我是重载的方法吗”); } }
Hinweis:
(1) Es gibt 4 Methoden mit demselben Namen in OverloadParent
(2) Die ersten drei Methoden haben inkonsistente Parametertypen und -nummern, aber die Rückgabewerte sind gleich, was eine Überladung darstellt
(3) Methode 4 und Methode 1 haben nur unterschiedliche Rückgabewerte und tun dies auch stellt keine Überladung dar, der Compiler wird nicht bestanden.
ps: Der Rückgabewert ist das Ergebnis der Methodenausführung. Wenn wir die Methode aufrufen, geben wir nicht an: „Ich möchte eine Methode mit einem Rückgabewert vom Typ xxx aufrufen.“ Methodenüberladung.
(4) OverloadParent erbt Demo und verfügt über alle Methoden in Demo. Man hatte das Gefühl, dass die bestehende Methode den Anforderungen nicht genügen konnte, sodass sie einfach überlastet war.
Flag der Überladung: Der Methodenname ist derselbe, aber die Parameter (Anzahl oder Typ) sind unterschiedlich, unabhängig vom Rückgabewert.
Schauen wir uns ein Override-Beispiel an:
public class OverrideParent{ public void fly(){ System.out.println(“Ican fly!”); } }
public class OverrideChild extends OverrideParent{ @override public void fly(){ System.out.println(“Ican't fly, but I can run!”); }
public static vid main(String[] args){ OverwriteParent child= new OverwriteChild(); child.fly(); } }
Was wird ausgegeben, wenn die Hauptmethode von OverrideChild ausgeführt wird?
Die Antwort lautet: Ich kann nicht fliegen, aber ich kann rennen!
Wir sehen:
(1) Sowohl OverrideChild als auch OverrideParent haben eine Flugmethode
(2) Der Rückgabewert und der Modifikator von Fly sind gleich, nur der Methodenkörper ist unterschiedlich
(3) Vor der Fly-Methode der Unterklasse befindet sich eine @overwrite-Annotation, die in jdk1 erscheint. 5, nur für die Klassenvererbung verwenden, 1.6 kann für die Schnittstellenimplementierung verwendet werden. Diese Anmerkung hilft der Compilerprüfung und kann weggelassen werden.
Die Zeichen der Abdeckung: Die Klasse „Schwiegerkind“ hat unterschiedliche Implementierungen derselben Methode. Anwendungsszenarien Überladung: Wenn Methoden ähnliche Funktionen haben, aber unterschiedliche Parameter übergeben müssen. Überschreiben: Wenn eine Unterklasse ihr eigenes einzigartiges Verhalten hat und es von der übergeordneten Klasse erbt, aber ihre eigenen Bedürfnisse nicht erfüllen kann. ps: Überladen und Überschreiben sind beides Manifestationen von Polymorphismus. Ersteres ist Compiler-Polymorphismus und letzteres ist Laufzeitpolymorphismus. Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, vielen Dank für Ihre Unterstützung dieser Website! Ausführlichere Erklärungen und Beispiele für Java-Überladung und -Überschreibung finden Sie auf der chinesischen PHP-Website!