Inhaltsverzeichnis
Polymorphismus in Java
Beispiel
Ausgabe
Umschreiben in Java
Warum folgen Variablen nicht dem Polymorphismus und dem Überschreiben?
Variables Abdecken und variables Verstecken
Fazit
Heim Java javaLernprogramm Variablen in Java folgen weder Polymorphismus noch Überschreibung

Variablen in Java folgen weder Polymorphismus noch Überschreibung

Sep 09, 2023 pm 06:13 PM
- Polymorphismus - Variablen - umschreiben

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

Ausgabe

The cat meows
Nach dem Login kopieren

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

Ausgabe

The cat meows
The animal makes a sound
Nach dem Login kopieren

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!

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 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 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)

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