Heim Java javaLernprogramm Der Unterschied zwischen Überladen und Umschreiben in Java

Der Unterschied zwischen Überladen und Umschreiben in Java

Jun 23, 2017 pm 04:37 PM
java 区别 重载

Achtung Studierende, die Java lernen! ! !
Wenn Sie während des Lernprozesses auf Probleme stoßen oder Lernressourcen erhalten möchten, können Sie gerne der Java-Lernaustauschgruppe beitreten: 159610322 Lassen Sie uns gemeinsam Java lernen!

Lassen Sie uns zunächst über Folgendes sprechen: Überladung


(1) Methodenüberladung besteht darin, die Klasse zu vereinheitlichen. Ein Mittel zur Handhabung verschiedener Typen von Daten. Es existieren gleichzeitig mehrere Funktionen mit demselben Namen und unterschiedlicher Anzahl/Art von Parametern.

Überladung ist eine Manifestation von Polymorphismus in einer Klasse.


(2) Java-Methodenüberladung bedeutet, dass Sie mehrere Methoden in einer Klasse erstellen können. Sie haben den gleichen Namen, aber unterschiedliche Parameter und unterschiedliche Definitionen.

Beim Aufrufen von Methoden bestimmt die spezifische Anzahl und Art der an sie übergebenen Parameter, welche Methode verwendet werden soll. Dies ist Polymorphismus.


(3) Beim Überladen sollte der Methodenname gleich sein, aber der Parametertyp und die Parameternummer sind unterschiedlich, und der Rückgabewerttyp kann gleich oder unterschiedlich sein. Der Rückgabetyp kann nicht als Kriterium zur Unterscheidung überladener Funktionen verwendet werden.


Das Folgende ist ein Beispiel für eine Überladung:
package c04.answer; //Dies ist der Paketname
//Dies ist im Wesentlichen die erste Programmiermethode dieses Programms Methode Erstellen Sie zunächst eine Instanz der Dog-Klasse und verwenden Sie dann das Schlüsselwort this im Konstruktor der Dog-Klasse, um verschiedene Bark-Methoden aufzurufen.

Verschiedene überladene Methoden werden anhand ihrer Parametertypen unterschieden.

//Hinweis: Mit Ausnahme des Konstruktors verbietet der Compiler den Aufruf des Konstruktors an anderer Stelle.
package c04.answer;

public class Dog {
Dog()
void bark()// Die bark()-Methode ist eine überladene Methode.
void bark(String m,double l)//Hinweis: Die Rückgabewerte überladener Methoden sind gleich,
                                                                                                                                                                    bark (String m, double l) Bark (5, „China“);
}
Void Bar k (int a, String N) // kann die Gewichtslastmethode nicht vom Rückgabewert unterscheiden, sondern kann nur „Parametertyp“ und „Klassenname“ verwenden. Unterscheiden Sie zwischen > Hund dog = new Dog();
//dog .bark(); [Seite]
//dog.bark("männlich", "gelb");
//dog.bark(5, " China");




Dann sprechen wir über das Überschreiben


(1) Mehrere Unterschiede zwischen übergeordneten Klassen und Unterklassen Stateful, definieren Sie die Funktionen der übergeordneten Klasse neu. Wenn eine in einer Unterklasse definierte Methode denselben Namen und dieselben Parameter wie ihre übergeordnete Klasse hat, spricht man von einer überschreibenden Methode. In Java kann eine Unterklasse Methoden von einer übergeordneten Klasse erben, ohne dieselben Methoden neu zu schreiben.

Aber manchmal möchte die Unterklasse die Methoden der übergeordneten Klasse nicht unverändert erben, sondern bestimmte Änderungen vornehmen, was ein Umschreiben der Methode erfordert.


Das Überschreiben von Methoden wird auch als Methodenüberschreiben bezeichnet.


(2) Wenn eine Methode in der Unterklasse denselben Methodennamen, denselben Rückgabetyp und dieselbe Parameterliste wie eine Methode in der übergeordneten Klasse hat, überschreibt die neue Methode die ursprüngliche Methode.

Wenn Sie die Originalmethoden in der übergeordneten Klasse benötigen, können Sie das Schlüsselwort super verwenden, das sich auf die übergeordnete Klasse der aktuellen Klasse bezieht.


(3) Die Zugriffsänderungsrechte von Unterklassenfunktionen dürfen nicht geringer sein als die der übergeordneten Klasse.
Das Folgende ist ein Beispiel für das Umschreiben:


Konzept: der Mechanismus zum Aufrufen von Objektmethoden.

Die Insider-Geschichte der dynamischen Bindung:

1. Der Compiler überprüft den Typ und Methodennamen der Objektdeklaration, um alle Kandidatenmethoden zu erhalten. Versuchen Sie, den Test der Basisklasse im obigen Beispiel auszukommentieren. Andernfalls wird die Kompilierung nicht bestanden.

2. Überladungsentscheidung: Der Compiler prüft den Parametertyp des Methodenaufrufs und wählt die einzige der oben genannten Kandidatenmethoden aus (dabei findet eine implizite Typkonvertierung statt).

Wenn der Compiler mehr als eine findet oder keine gefunden wird, meldet der Compiler einen Fehler. Versuchen Sie, den Test (Byte b) der Basisklasse im obigen Beispiel auszukommentieren. Das laufende Ergebnis ist 1 1.

3. Wenn der Methodentyp „Priavte static final“ ist und Java die statische Kompilierung verwendet, weiß der Compiler genau, welche
-Methode aufgerufen werden muss.

4. Wenn das Programm ausgeführt wird und dynamische Bindung zum Aufrufen einer Methode verwendet, muss die virtuelle Maschine die Methodenversion aufrufen, die dem tatsächlichen Typ des Objekts entspricht.

Im Beispiel ist der tatsächliche Typ, auf den b zeigt, TestOverriding, daher ruft b.test(0) den Test der Unterklasse auf.

Die Unterklasse überschreibt jedoch nicht test(byte b), daher ruft b.test((byte)0) den test(byte b) der übergeordneten Klasse auf.

Wenn das (Byte b) der übergeordneten Klasse auskommentiert ist, wird der implizite Typ im zweiten Schritt in int konvertiert und schließlich wird der Test (int i) der Unterklasse aufgerufen.

Lernzusammenfassung:

Polymorphismus ist ein Merkmal der objektorientierten Programmierung und hat nichts mit Methoden zu tun.
Einfach ausgedrückt bedeutet es, dass es sich um dieselbe Methode handelt kann basierend auf unterschiedlichen Eingabedaten verwendet werden, die eine unterschiedliche Verarbeitung erfordern, d Die Daten sind die gleichen, aber wenn Sie eine Antwort geben möchten, die sich von der der übergeordneten Klasse unterscheidet, müssen Sie die Methode der übergeordneten Klasse überschreiben.

Das heißt, die Methode in der Unterklasse neu schreiben – gleiche Parameter, unterschiedlich Implementierungen (dynamischer multipler Morphismus)

Die drei Hauptmerkmale von OOP: Vererbung, Polymorphismus und Kapselung.

public class Base

{

void test(int i)

{
System.out.print(i);
}
void test(byte b } {
i++;
System.out.println(i);
}
public static void main(String[]agrs)
Base b =new TestOverriding();
b.test(0)
Das Ergebnis der dynamischen Bindung.



Der Hauptvorteil des Überschreibens ist die Möglichkeit, Merkmale zu definieren, die für eine Unterklasse einzigartig sind:

public class Father{

public void speak(){

System.out.println(Father);

}

}

public class Son erweitert Father{

public void speak ( ){

System.out.println("son");

}

}

Dies wird auch Polymorphismus und die überschreibende Methode genannt Nur können in einer Vererbungsbeziehung existieren. Überschreibende Methoden können nur nicht private Methoden der übergeordneten Klasse überschreiben.

Wenn die Speak()-Methode der Vaterklasse im obigen Beispiel privat ist, kann die Son-Klasse die Speak()-Methode der Vaterklasse nicht überschreiben. Zu diesem Zeitpunkt ist die Speak()-Methode der Son-Klasse äquivalent definiert in der Son-Klasse speak() Methode.

Sobald die speak()-Methode der Vaterklasse endgültig ist, kann die Son-Klasse die speak()-Methode der Vaterklasse überhaupt nicht überschreiben, unabhängig davon, ob die Methode öffentlich, geschützt oder standardmäßig geändert wird.

versucht es Um den Code zu kompilieren, meldet der Compiler einen Fehler. Beispiel:

public class Father{

final public void speak(){

System.out.println("Father");

}

}

public class Son erweitert Father{

public void speak(){

System.out.println("son");

}

} //Der Compiler meldet einen Fehler

Wenn die speak()-Methode der Vaterklasse standardmäßig geändert wird, kann sie nur in sein sich im selben Paket befinden und von anderen Unterklassen geändert werden, werden überschrieben und können nicht überschrieben werden, wenn sie sich nicht im selben Paket befinden.

Wenn die speak()-Methode der Father-Klasse protoetiert wird, wird sie nicht nur von ihren Unterklassen im selben Paket überschrieben, sondern kann auch von Unterklassen verschiedener Pakete überschrieben werden.

Regeln für das Überschreiben von Methoden:

1. Die Parameterliste muss genau mit der überschriebenen Methode übereinstimmen, sonst kann es nicht als Überschreiben, sondern als Überladen bezeichnet werden.

2. Der Rückgabetyp muss immer mit dem Rückgabetyp der überschriebenen Methode identisch sein, sonst kann es nicht als Überschreiben, sondern als Überladen bezeichnet werden.

3. Der Zugriffsmodifikator-Grenzwert muss größer sein als der Zugriffsmodifikator der überschriebenen Methode (public>protected>default>private)

4. Die überschriebene Methode darf keine neuen Checked-Ausnahmen auslösen geprüfte Ausnahmen, die umfassender sind als die überschriebene Methodendeklaration. Beispiel:

Eine Methode der übergeordneten Klasse deklariert eine geprüfte Ausnahme IOException. Beim Überschreiben dieser Methode können Sie keine Ausnahmen auslösen. Sie können nur Ausnahmen von Unterklassen von IOException auslösen.

Die Regeln für die Überladung:

1. Muss unterschiedliche Parameterlisten haben.

Kann nicht beschuldigende Rückgabetypen haben Die Parameterliste ist unterschiedlich;

Kann unterschiedliche Zugriffsmodifikatoren haben;

Der Unterschied zwischen Umschreiben und Überladen ist:

Das Umschreiben von Polymorphismus kann die Menge an Codeeingaben beim Aufrufen überladener Methoden erheblich reduzieren. Sie können unterschiedliche Funktionen oder Rückgabewerte haben.

Eine gute Verwendung von Umschreiben und Überladen kann eine Klasse mit einer klaren und prägnanten Struktur entwerfen. Man kann sagen, dass Umschreiben und Überladen eine außerordentliche Rolle beim Schreiben von Code spielen.

Achtung, Studierende, die Java lernen! ! !

Wenn Sie während des Lernprozesses auf Probleme stoßen oder Lernressourcen erhalten möchten, können Sie gerne der Java-Lernaustauschgruppe beitreten: 159610322 Lassen Sie uns gemeinsam Java lernen!

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Überladen und Umschreiben in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Unterschied zwischen Multithreading und asynchronem C# Der Unterschied zwischen Multithreading und asynchronem C# Apr 03, 2025 pm 02:57 PM

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.

Der Unterschied zwischen char und wchar_t in der C -Sprache Der Unterschied zwischen char und wchar_t in der C -Sprache Apr 03, 2025 pm 03:09 PM

In der C -Sprache ist der Hauptunterschied zwischen char und wchar_t die Zeichencodierung: char verwendet ASCII oder erweitert ASCII, wchar_t Unicode; char nimmt 1-2 Bytes auf, wchar_t nimmt 2-4 Bytes auf; char ist für englischen Text geeignet. Wchar_t ist für mehrsprachige Text geeignet. char ist weithin unterstützt, wchar_t hängt davon ab, ob der Compiler und das Betriebssystem Unicode unterstützen. char ist in der Charakterbereich begrenzt, WCHAR_T hat einen größeren Charakterbereich und spezielle Funktionen werden für arithmetische Operationen verwendet.

Was ist die Funktion der C -Sprachsumme? Was ist die Funktion der C -Sprachsumme? Apr 03, 2025 pm 02:21 PM

Es gibt keine integrierte Summenfunktion in der C-Sprache, daher muss sie selbst geschrieben werden. Die Summe kann erreicht werden, indem das Array durchquert und Elemente akkumulieren: Schleifenversion: Die Summe wird für die Schleifen- und Arraylänge berechnet. Zeigerversion: Verwenden Sie Zeiger, um auf Array-Elemente zu verweisen, und eine effiziente Summierung wird durch Selbststillstandszeiger erzielt. Dynamisch Array -Array -Version zuweisen: Zuordnen Sie Arrays dynamisch und verwalten Sie selbst den Speicher selbst, um sicherzustellen, dass der zugewiesene Speicher befreit wird, um Speicherlecks zu verhindern.

Gibt es eine mobile App, die XML in PDF umwandeln kann? Gibt es eine mobile App, die XML in PDF umwandeln kann? Apr 02, 2025 pm 08:54 PM

Eine Anwendung, die XML direkt in PDF konvertiert, kann nicht gefunden werden, da es sich um zwei grundlegend unterschiedliche Formate handelt. XML wird zum Speichern von Daten verwendet, während PDF zur Anzeige von Dokumenten verwendet wird. Um die Transformation abzuschließen, können Sie Programmiersprachen und Bibliotheken wie Python und ReportLab verwenden, um XML -Daten zu analysieren und PDF -Dokumente zu generieren.

Was sind die grundlegenden Anforderungen für C -Sprachfunktionen? Was sind die grundlegenden Anforderungen für C -Sprachfunktionen? Apr 03, 2025 pm 10:06 PM

C -Sprachfunktionen sind die Grundlage für die Code -Modularisierung und das Programmaufbau. Sie bestehen aus Deklarationen (Funktionsüberschriften) und Definitionen (Funktionskörper). C Sprache verwendet standardmäßig Werte, um Parameter zu übergeben, aber externe Variablen können auch mit dem Adresspass geändert werden. Funktionen können oder haben keinen Rückgabewert, und der Rückgabewerttyp muss mit der Deklaration übereinstimmen. Die Benennung von Funktionen sollte klar und leicht zu verstehen sein und mit Kamel oder Unterstrich die Nomenklatur. Befolgen Sie das Prinzip der einzelnen Verantwortung und behalten Sie die Funktion ein, um die Wartbarkeit und die Lesbarkeit zu verbessern.

Wie benutze ich XPath, um von einem bestimmten DOM -Knoten in JavaScript aus zu suchen? Wie benutze ich XPath, um von einem bestimmten DOM -Knoten in JavaScript aus zu suchen? Apr 04, 2025 pm 11:15 PM

Detaillierte Erläuterung der XPath -Suchmethode unter DOM -Knoten in JavaScript, wir müssen häufig bestimmte Knoten aus dem DOM -Baum basierend auf XPath -Ausdrücken finden. Wenn Sie ...

Was sind die Unterschiede und Verbindungen zwischen C und C#? Was sind die Unterschiede und Verbindungen zwischen C und C#? Apr 03, 2025 pm 10:36 PM

Obwohl C und C# Ähnlichkeiten haben, sind sie völlig unterschiedlich: C ist eine prozessorientierte, manuelle Speicherverwaltung und plattformabhängige Sprache, die für die Systemprogrammierung verwendet wird. C# ist eine objektorientierte, Müllsammlung und plattformunabhängige Sprache, die für Desktop-, Webanwendungs- und Spielentwicklung verwendet wird.

c Was sind die Unterschiede zwischen den drei Implementierungsmethoden des Multithreading? c Was sind die Unterschiede zwischen den drei Implementierungsmethoden des Multithreading? Apr 03, 2025 pm 03:03 PM

Multithreading ist eine wichtige Technologie in der Computerprogrammierung und wird zur Verbesserung der Programmausführungseffizienz verwendet. In der C -Sprache gibt es viele Möglichkeiten, Multithreading zu implementieren, einschließlich Threadbibliotheken, POSIX -Threads und Windows -API.

See all articles