Heim Java javaLernprogramm Polymorphismus: Überschreiben der Dekodierungsmethode in Java

Polymorphismus: Überschreiben der Dekodierungsmethode in Java

Nov 02, 2024 pm 06:14 PM

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;
    }
}
Nach dem Login kopieren
Nach dem Login kopieren

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
    }
}
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren
Nach dem Login kopieren

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!

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

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

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 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.

See all articles