suchen
HeimJavajavaLernprogrammPolymorphismus: Überschreiben der Dekodierungsmethode in Java

Polymorphism: Decoding Method Overriding in Java

Methodenüberschreibung ist eines der Kernkonzepte des Polymorphismus in Java und ermöglicht es einer Unterklasse, eine spezifische Implementierung einer bereits in ihrer Oberklasse definierten Methode bereitzustellen. Diese leistungsstarke Funktion trägt dazu bei, Laufzeitpolymorphismus zu erreichen und ermöglicht den dynamischen Methodenversand. In diesem Beitrag werden wir uns mit den wesentlichen Konzepten, Regeln und Beispielen aus der Praxis befassen, um das Methodenüberschreiben gründlich zu verstehen.


Was ist Methodenüberschreibung?

Methodenüberschreibungen treten auf, wenn eine Unterklasse eine Methode aus ihrer Oberklasse mit der gleichen Methodensignatur (gleicher Name, gleiche Parameter und Rückgabetyp oder ein kovarianter Rückgabetyp) neu definiert. Im Gegensatz zur Methodenüberladung, die zur Kompilierzeit aufgelöst wird, wird durch das Überschreiben von Methoden ein Laufzeitpolymorphismus erreicht, bei dem die tatsächlich aufgerufene Methode vom Laufzeittyp des Objekts abhängt.


1. Regeln zum Überschreiben der Methode

1. Konsistenz der Methodensignatur:

  • Der Methodenname und die Parameterliste in der Unterklasse müssen genau mit der Methode in der Oberklasse übereinstimmen.

2. Rückgabetyp und kovariante Rückgabetypen:

  • Der Rückgabetyp muss entweder derselbe oder ein kovarianter Typ (ein Untertyp des ursprünglichen Rückgabetyps in der Oberklasse) sein.

3. Zugriffsmodifikatoren:

  • Eine Methode in einer Unterklasse kann keine restriktivere Zugriffsebene haben als die Methode in der Oberklasse (z. B. wenn die Methode der Oberklasse geschützt ist, kann die Unterklasse sie nicht privat machen).

Öffentlich > Geschützt > Standard (Paket-Privat) > Privat

4. Sichtbarkeit der Methode:

  • Private Methoden können nicht überschrieben werden. Stattdessen werden sie bei einer Neudefinition in der Unterklasse als völlig neue Methoden behandelt.

Beispiel: Grundlegende Methodenüberschreibung

package oops.polymorphism;

// Base class
public class MethodOverridingParent {

    // Private Methods CANNOT be overridden
    private String getName() {
        return "Hello";
    }

    // Display method to be overridden (Access Modifier: default)
    void display() {
        System.out.println("Parent Method Called");
    }

    // Return type is Number (parent class of Integer, Double, etc.)
    public Number getCount() {
        return 20;
    }
}

In MethodOverridingParent können nur display() und getCount() von Unterklassen überschrieben werden, da auf sie über die übergeordnete Klasse hinaus zugegriffen werden kann. Allerdings ist getName() privat und kann daher nicht überschrieben werden, da es nicht von Unterklassen geerbt wird.


2. Methodenüberschreibung in der untergeordneten Klasse

package oops.polymorphism;

public class MethodOverridingChild extends MethodOverridingParent {

    // Access Level Increased; Default -> Protected
    @Override
    protected void display() {
        System.out.println("Child Method Called");
    }

    public static void main(String[] args) {

        // Calling Parent Class Method
        MethodOverridingParent parent = new MethodOverridingParent();
        parent.display(); // Output: Parent Method Called

        // Calling Child Class Overridden Method - Runtime Polymorphism
        MethodOverridingParent child = new MethodOverridingChild();
        child.display(); // Output: Child Method Called
    }
}

Erklärung: Da display() in der Unterklasse MethodOverridingChild überschrieben wird, ruft der Aufruf von display() auf einer MethodOverridingChild-Instanz die Version des Kindes auf. Dies ist Laufzeitpolymorphismus in Aktion.


3. Kovariante Rückgabetypen: Ein praktisches Beispiel

Java unterstützt kovariante Rückgabetypen und ermöglicht der Unterklasse, einen Typ zurückzugeben, der spezifischer ist als der Rückgabetyp der Oberklasse. Dieser Ansatz folgt dem Liskov-Substitutionsprinzip in den SOLID-Prinzipien und erhöht so die Codeflexibilität.

package oops.polymorphism;

// Base class
public class MethodOverridingParent {

    // Private Methods CANNOT be overridden
    private String getName() {
        return "Hello";
    }

    // Display method to be overridden (Access Modifier: default)
    void display() {
        System.out.println("Parent Method Called");
    }

    // Return type is Number (parent class of Integer, Double, etc.)
    public Number getCount() {
        return 20;
    }
}

Erklärung: In CovariantReturnType überschreibt getCount() die Methode des übergeordneten Elements, indem es eine Ganzzahl, einen Untertyp von Number, zurückgibt, was kovariante Rückgabetypen demonstriert. Die Methode bleibt öffentlich, da Java verlangt, dass die Zugriffsebene einer überschriebenen Methode nicht reduziert werden kann.


Methodenüberschreibung vs. Methodenüberladung

  • Methodenüberschreibung ermöglicht dynamischen Polymorphismus und arbeitet in Vererbungshierarchien.
  • Methodenüberladung ist eine Form des statischen Polymorphismus, der innerhalb derselben Klasse durch unterschiedliche Parametertypen oder -nummern erreicht wird.

Wann das Überschreiben von Methoden verwendet werden sollte

  1. Dynamische Methodenauflösung: Überschreibende Methoden werden zur Laufzeit basierend auf dem Objekttyp aufgelöst, was eine größere Flexibilität bietet.
  2. Verhalten erweitern: Unterklassen können die Funktionalität von Methoden der Oberklasse ändern oder erweitern.

Fazit

Durch das Verständnis und die Anwendung von Methodenüberschreibung können wir flexiblere, wiederverwendbare und polymorphe Java-Anwendungen erstellen, die den Prinzipien der objektorientierten Programmierung entsprechen.


Verwandte Beiträge

  • Java-Grundlagen

  • Array Interview Essentials

  • Java Memory Essentials

  • Java Keywords Essentials

  • Collections Framework Essentials

Viel Spaß beim Programmieren!

Das obige ist der detaillierte Inhalt vonPolymorphismus: Überschreiben der Dekodierungsmethode in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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
Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Mar 17, 2025 pm 05:46 PM

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Mar 17, 2025 pm 05:45 PM

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Mar 17, 2025 pm 05:44 PM

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Mar 17, 2025 pm 05:43 PM

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Mar 17, 2025 pm 05:35 PM

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

See all articles

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 vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)