Variablen in Java folgen weder Polymorphismus noch Überschreibung
In der Welt der objektorientierten Programmierung (OOP) sind Polymorphismus und Umschreiben Schlüsselkonzepte, die Programmiersprachen Flexibilität und Vitalität verleihen. Als leistungsstarke OOP-Sprache unterstützt Java diese Funktionen vollständig. Es ist jedoch wichtig zu verstehen, dass diese Merkmale für Methoden in Java und nicht für Variablen gelten. In diesem Artikel werden wir untersuchen, warum Variablen in Java nicht dem Polymorphismus und dem Überschreiben folgen, um ein tieferes Verständnis des Variablenverhaltens von Java zu erlangen.
Polymorphismus in Java
Polymorphismus ist ein griechisches Wort und bedeutet „viele Formen“ und ist ein Grundkonzept von OOP. Dadurch können Objekte unterschiedlichen Typs als Objekte eines gemeinsamen Supertyps behandelt werden, wodurch flexiblerer und wiederverwendbarer Code geschrieben werden kann. In Java wird Polymorphismus durch Vererbung, Schnittstellen und Methodenüberschreibung erreicht.
Beispiel
Sehen wir uns ein Beispiel an
class Animal { void sound() { System.out.println("The animal makes a sound"); } } class Cat extends Animal { @Override void sound() { System.out.println("The cat meows"); } } public class Main { public static void main(String[] args) { Animal myAnimal = new Cat(); myAnimal.sound(); } }
Ausgabe
The cat meows
In diesem Szenario ist myAnimal die Animal-Referenzvariable, die auf das Cat-Objekt zeigt. Wenn die Methode sound() für myAnimal aufgerufen wird, wird die Version in der Cat-Klasse aufgerufen, nicht die Version in der Animal-Klasse. Hierbei handelt es sich um Polymorphismus, bei dem die aufzurufende Methode durch den tatsächlichen Objekttyp und nicht durch den Referenztyp bestimmt wird.
Umschreiben in Java
Methodenüberschreibung ist eine spezielle Form des Polymorphismus in Java, bei der eine Unterklasse eine spezifische Implementierung einer in ihrer Oberklasse definierten Methode bereitstellt. Methoden in Unterklassen müssen denselben Namen, denselben Rückgabetyp und dieselben Parameter wie Methoden in der Oberklasse haben.
Warum folgen Variablen nicht dem Polymorphismus und dem Überschreiben?
Warum folgen Variablen nicht dem Polymorphismus und dem Überschreiben? Im Gegensatz zu Methoden folgen Variablen in Java nicht den Konzepten des Polymorphismus und des Überschreibens. Dieser Unterschied ergibt sich aus grundlegenden Unterschieden in der Art und Weise, wie Methoden und Variablen in Objekten existieren und funktionieren
In Java gehören Instanzvariablen zu Instanzen einer Klasse, was bedeutet, dass jede Instanz ihre eigene Kopie der Instanzvariablen hat. Daher hat die Änderung des Werts einer Instanzvariablen in einem Objekt keine Auswirkungen auf andere Objekte derselben Klasse.
Methoden hingegen gehören zur Klasse selbst und nicht zu einer bestimmten Instanz. Das bedeutet, dass Methoden im Gegensatz zu Variablen nicht für jedes Objekt der Klasse eine separate Kopie haben.
Beispiel
Lass uns das vorherige Beispiel durchgehen, aber dieses Mal fügen wir Instanzvariablen hinzu:
class Animal { String sound = "The animal makes a sound"; void makeSound() { System.out.println(sound); } } class Cat extends Animal { String sound = "The cat meows"; @Override void makeSound() { System.out.println(sound); } } public class Main { public static void main(String[] args) { Animal myAnimal = new Cat(); myAnimal.makeSound(); System.out.println(myAnimal.sound); } }
Ausgabe
The cat meows The animal makes a sound
In diesem Code ist myAnimal eine Animal-Referenz, die auf das Cat-Objekt verweist. Der Aufruf der Methode makeSound() für myAnimal gibt „Die Katze miaut“ aus, aber die Zeile System.out.println(myAnimal.sound) gibt „Das Tier macht ein Geräusch“ aus. Warum passiert das? Da die Methode dem Polymorphismus folgt, wird die Methode makeSound() in der Cat-Klasse ausgeführt. Da die Variablen jedoch keinem Polymorphismus folgen, wird die „Soundvariable“ aus der Klasse Animal verwendet
Dieses Verhalten ist auf das Prinzip des Ausblendens von Variablen zurückzuführen. Wenn eine Variable in einer Unterklasse denselben Namen hat wie eine Variable in ihrer Oberklasse, verbirgt die Unterklassenvariable die Oberklassenvariable
Dies bedeutet nicht, dass die Superklassenvariable überschrieben wurde. Die beiden Variablen existieren weiterhin unabhängig voneinander und die verwendete Variable wird durch den Referenztyp und nicht durch den tatsächlichen Objekttyp bestimmt. Deshalb erhalten wir, wenn wir über die Animal-Referenz auf die Soundvariable zugreifen, den Soundwert von der Animal-Klasse und nicht von der Cat-Klasse.
Variables Abdecken und variables Verstecken
In Java werden Variablen durch das Überschreiben ähnlicher Methoden nicht beeinflusst. Stattdessen folgen sie dem Prinzip des Variablenversteckens. Es gibt einen grundlegenden Unterschied zwischen dem Ausblenden von Variablen und dem Überschreiben von Methoden:
Methodenüberschreibung – Beim Überschreiben stellt eine Unterklasse eine andere Implementierung einer Methode bereit, die bereits in ihrer Oberklasse definiert ist. Die Entscheidung, welche Methode aufgerufen werden soll, basiert auf dem Typ des tatsächlichen Objekts und nicht auf dem Referenztyp, der Polymorphismus ermöglicht.
Ausblenden von Variablen – Wenn beim Ausblenden von Variablen eine Variable in einer Unterklasse denselben Namen hat wie eine Variable in ihrer Oberklasse, verbirgt die Unterklassenvariable die Variable der Oberklasse. Die Entscheidung, welche Variable verwendet werden soll, basiert auf dem Referenztyp und nicht auf dem Typ des tatsächlichen Objekts.
Diese Prinzipien ergeben sich aus der Tatsache, dass Methoden Verhalten darstellen, während Variablen den Zustand darstellen. Das Verhalten kann polymorph sein und überschrieben werden, sodass unterschiedliche Objekttypen unterschiedliche Verhaltensweisen aufweisen können. Im Gegensatz dazu gehört der durch eine Variable dargestellte Zustand zu einer bestimmten Instanz und ist nicht polymorph.
Fazit
Zusammenfassend lässt sich sagen, dass das Verständnis, warum Variablen in Java nicht dem Polymorphismus und dem Überschreiben folgen, wichtige Einblicke in die Funktionsweise von Java liefern kann. Dieses Wissen ist für Java-Programmierer von entscheidender Bedeutung, um Missverständnisse und Fehler bei der Verwendung von Vererbung und Polymorphismus zu vermeiden
Das obige ist der detaillierte Inhalt vonVariablen in Java folgen weder Polymorphismus noch Überschreibung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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

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]

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.

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.
