Viele Schüler sind dumm und können den Unterschied zwischen Überladung und Überschreibung nicht erkennen. Es wird empfohlen, konzeptionelles Wissen nicht durch Rote zu merken, sondern es zu verstehen und zu merken.
Lassen Sie mich zuerst meine Definition geben:
Lassen Sie uns zunächst darüber sprechen: Überlastung
(1) Methodenüberladung ist ein Mittel, damit Klassen verschiedene Arten von Daten auf einheitliche Weise verarbeiten lassen. Gleichzeitig gibt es mehrere Funktionen mit demselben Namen mit unterschiedlichen Parametern/Typen. Überlastung ist eine Manifestation des Polymorphismus in einer Klasse.
(2) Überladung von Java -Methoden bedeutet, dass in einer Klasse mehrere Methoden erstellt werden können, sie haben denselben Namen, haben jedoch unterschiedliche Parameter und unterschiedliche Definitionen. Beim Aufrufen von Methoden entscheiden wir, welche Methode nach der Anzahl der verschiedenen Parameter und Parametertypen verwendet werden soll. Dies ist Polymorphismus.
(3) Beim Überladung muss der Methodenname gleich sein, aber der Parametertyp und die Anzahl unterschiedlich und der Rückgabewerttyp kann gleich oder unterschiedlich sein. Der Rückgabetyp kann nicht als Unterscheidungskriterien für Überladungsfunktionen verwendet werden.
Schauen wir uns zunächst das Beispiel der Überlastung 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 ("bin ich überlastete Methode?"); }} öffentliche Klasse OverloadChildextends OverloadParent {public void getPerson (Doppelgeld) {System.out.println ("ist eine überlastete Methode"); }}Achten Sie auf die Beobachtung:
(1) Es gibt 4 Methoden mit demselben Namen in Überlastungsparent
(2) Die Parametertypen und -zahlen der ersten drei Methoden sind inkonsistent, und der Rückgabewert ist der gleiche, was eine Überladung ausmacht
(3) Methode 4 und Methode 1 Die Rücksendewerte sind nicht unterschiedlich und stellen keine Überlastung dar, und der Compiler passt nicht.
PS: Der Rückgabewert ist das Ergebnis der Methodenausführung. Wenn wir die Methode aufrufen, werden wir nicht angeben, dass ich eine Methode mit dem Rückgabewert des XXX -Typs aufrufen möchte. "
. Es hatte das Gefühl, dass die vorhandene Methode den Bedürfnissen nicht erfüllen konnte, so dass sie einfach eine überlastete.
Überladene Flags: Der Methodenname ist der gleiche, die Parameter sind unterschiedlich (Nummer oder Typ) und haben nichts mit dem Rückgabewert zu tun.
Dann sprechen wir über Überschreibungen (überschreiben)
(1) Der Polymorphismus zwischen der übergeordneten Klasse und der Kinderklasse definiert die Funktionen der übergeordneten Klasse. Wenn eine in einer Unterklasse definierte Methode denselben Namen und Parametern wie seine übergeordnete Klasse hat, sagen wir, dass die Methode überschrieben ist. In Java können Unterklassen Methoden aus der übergeordneten Klasse erben, ohne dieselbe Methode neu zu schreiben.
Manchmal möchte die Unterklasse die Methoden der Elternklasse nicht intakt erben, sondern bestimmte Änderungen vornehmen, was erforderlich ist, um die Methode neu zu schreiben.
Das Umschreiben von Methoden wird auch als Methodenüberschreibung bezeichnet.
(2) Wenn die Methode in der Unterklasse denselben Methodennamen, Rückgabetyp und Parametertabelle als Methode in der übergeordneten Klasse hat, überschreibt die neue Methode die ursprüngliche Methode.
Wenn Sie die ursprüngliche Methode in der übergeordneten Klasse benötigen, können Sie das Super -Keyword verwenden, das sich auf die übergeordnete Klasse der aktuellen Klasse bezieht.
(3) die Zugriffsmodifikationsberechtigungen von Unterklassenfunktionen können nicht geringer sein als die der übergeordneten Klasse;
Schauen wir uns ein Beispiel für das Überschreiben an:
public class oversideParent {public void fly () {System.out.println ("ican fly!"); }} public class overdiEchild erweitert overrideParent {@Override public void fly () {System.out.println ("ican't fly, aber ich kann rennen!"); } public static vid main (String [] args) {overwriteParent Child = new Overwritechild (); Child.fly (); }}Was wird bei der Ausführung der Hauptmethode von OverdiEchild ausgegeben?
Die Antwort lautet: Ich kann nicht fliegen, aber ich kann rennen!
Wir sehen:
(1) OverdiEchild und OverrideParent haben eine Fliegenmethode
(2) Der Rückgabewert und der Modifikator der Fliege sind gleich, nur der Methodenkörper ist anders
(3) Es gibt eine Annotation von @Overwrite vor der Fliegenmethode der Unterklasse. JDK1.5 erscheint und wird nur für die Klassenvererbung verwendet. 1.6 kann zur Implementierung der Schnittstellen verwendet werden. Diese Annotation hilft Compiler, es zu überprüfen, und es ist in Ordnung, sie nicht hinzuzufügen.
Überschrieben Flags : Das Kind erbt die übergeordnete Klasse und verfügt über unterschiedliche Implementierungen für dieselbe Methode.
Anwendungsszenarien
Überlast: Wenn die Methodenfunktionen ähnlich sind, müssen jedoch verschiedene Parameter übergeben werden.
Überschreibung: Wenn eine Unterklasse ein eigenes Verhalten hat, erbt sie von der Elternklasse und kann ihre eigenen Bedürfnisse nicht erfüllen.
PS: Überlastung und Überschreibung sind beide Manifestationen des Polymorphismus. Ersteres ist Compiler -Polymorphismus, während letzteres Laufzeit -Polymorphismus ist.
Regeln für das Umschreiben von Methoden:
1. Die Parameterliste muss genau die gleiche sein wie die umgeschriebene Methode, sonst kann sie nicht als Umschreiben bezeichnet, sondern überlastet werden.
2. Der zurückgegebene Typ muss immer mit dem Rückgabetyp der überschriebenen Methode übereinstimmen, sonst kann er nicht als Umschreiben bezeichnet, sondern überlastet werden.
3. Die Zugriffsmodifikatorgrenze muss größer sein als der Zugriffsmodifikator der umgeschriebenen Methode (öffentlich> geschützt> Standard> privat)
V. Zum Beispiel:
Eine Methode der übergeordneten Klasse deklariert eine Ausnahme von IOException Checking. Wenn Sie diese Methode neu schreiben, können Sie keine Ausnahme ausgeben, Sie können nur eine Ausnahme von Subklassen von IOException und nicht überprüfende Ausnahmen machen.
Und die Regeln für die Überlastung:
1. Muss unterschiedliche Parameterlisten haben;
2. Es kann einen Rückgabetyp geben, der Sie nicht schimpft, solange die Parameterliste unterschiedlich ist.
3.. Es kann unterschiedliche Zugriffsmodifikatoren geben;
4. Verschiedene Ausnahmen können geworfen werden;
Der Unterschied zwischen Umschreiben und Überlastung ist:
Das Umschreiben von Polymorphismus funktioniert und aufgerufene überlastete Methoden können die Eingangsmenge des Codes erheblich reduzieren. Solange der gleiche Methodenname unterschiedliche Parameter übergibt, kann er unterschiedliche Funktionen oder Rückgabeteile haben.
Wenn Sie das Umschreiben und Überladen von gutem Zustand verwenden, können Sie eine Klasse mit klarer und prägnanter Struktur entwerfen. Es kann gesagt werden, dass die Rolle des Umschreibens und Überladens beim Schreiben von Code außergewöhnlich ist.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.