Heim  >  Artikel  >  Java  >  Dynamische Bindung in Java

Dynamische Bindung in Java

PHPz
PHPzOriginal
2024-08-30 16:06:55801Durchsuche

„Dynamisch“ bedeutet „Laufzeit“ und „Bindung“ bedeutet „Assoziation“. Der Begriff „dynamische Bindung“ bezeichnet also die Laufzeitzuordnung von Objekten durch eine virtuelle Java-Maschine. Hier werden wir sehen, wie Java eine dynamische Bindung zur Laufzeit erreicht, also vor der endgültigen Ausführung des Codes, aber nach der Kompilierung.

Syntax: Für die dynamische Bindung in Java sollten Sie der grundlegenden Java-Syntax mit Anmerkungen folgen. Sie können hier die Annotation @Override verwenden, um anzugeben, welche Methode wir konkret überschreiben möchten.

WERBUNG Beliebter Kurs in dieser Kategorie JAVA MASTERY - Spezialisierung | 78 Kursreihe | 15 Probetests

Wie funktioniert dynamische Bindung in Java?

Laufzeitpolymorphismus funktioniert in Java durch Methodenüberschreibung. Das Überschreiben von Methoden erfolgt, wenn Objekte denselben Methodennamen, dieselben Argumente und denselben Typ wie ihre übergeordnete Klasse haben, jedoch eine andere Funktionalität aufweisen. Wenn eine untergeordnete Klasse diese Art von Methode enthält, nennen wir sie eine überschriebene Methode.

Warum heißt es dynamische Bindung?

Der Grund für die Benennung liegt darin, dass die Funktionalität der Methode dynamisch zur Laufzeit gemäß dem Objekt durch die JVM entschieden wird. Es wird auch als „Laufzeitpolymorphismus“ bezeichnet. Wenn wir eine überschriebene Methode einer untergeordneten Klasse über ihre übergeordnete Typreferenz aufrufen (dieses Phänomen wird in Java als „Upcasting“ bezeichnet), dann gibt der Typ des Objekts an, welche Methode oder Funktionalität aufgerufen wird. Diese Entscheidung wird während der Laufzeit von der JVM nach der Kompilierung des Codes getroffen. Daher wird es Laufzeitpolymorphismus genannt. Es wird auch „späte Bindung“ genannt, da die Bindung von Methode und Objekt, d. h. die Funktionalität der Methode des Objekts, die angezeigt wird, spät, d. h. nach der Kompilierung, entschieden wird.

Regeln zur dynamischen Bindung

  • Methoden oder Funktionen der untergeordneten und übergeordneten Klasse müssen denselben Namen haben.
  • Methoden oder Funktionen der untergeordneten und übergeordneten Klasse müssen denselben Parameter haben.
  • Die Vererbungsbeziehung ist obligatorisch (IS-A-Beziehung).

Einschränkungen bei der dynamischen Bindung

  • Sie können die privaten Methoden einer übergeordneten Klasse nicht überschreiben.
  • Final-Methoden können nicht überschrieben werden.
  • Statische Methoden können nicht überschrieben werden.

Beispiele zur Implementierung dynamischer Bindung

Wir werden hier einige Codebeispiele für dynamische Bindung besprechen:

Beispiel #1

In diesem Beispiel zeigen wir, wie die Methode „locate()“ unterschiedliche Meldungen anzeigt, je nachdem, mit welchem ​​Objekttyp sie verknüpft ist. Wenn es mit dem Typ „Kontinent“ verknüpft ist, werden Nachrichten von einer übergeordneten Klasse angezeigt. Wenn es mit dem Typ „SubContinent“ verknüpft ist, werden Nachrichten der untergeordneten Klasse angezeigt.

Code:

class Continent {
public void locate () {
System.out.println("We are in Continent");
}
}
class SubContinent extends Continent {
@Override
public void locate () {
System.out.println("We are in SubContinent");
}
}
public class DynamicBinding {
public static void main(String args[]) {
Continent superObject = new Continent ();
superObject.locate(); //method of super class or parent class is called
SubContinent subObject = new SubContinent (); // upcasting
subObject.locate();//method of sub class or child class is called by Parent reference, this is called "Dynamic Binding"
SubContinent subObject2 = new SubContinent ();
subObject2.locate(); //method of sub class or child class is called
}
}

Ausgabe:

Dynamische Bindung in Java

Beispiel #2

Nehmen wir ein Beispiel der dynamischen Bindung bei mehrstufiger Vererbung. In diesem Beispiel werden zwei Vererbungsebenen berücksichtigt. In diesem Beispiel zeigen wir, wie die Methode identify() unterschiedliche Meldungen anzeigt, je nachdem, mit welchem ​​Objekttyp sie verknüpft ist. Wenn es mit dem Typ „Computer“ verknüpft ist, werden Nachrichten von einer übergeordneten Klasse angezeigt. Wenn es mit dem Typ „Desktop“ verknüpft ist, zeigt es Nachrichten von seiner untergeordneten Klasse an. Auch in der zweiten Vererbungsebene zeigt es bei Zuordnung zum Typ „Laptop“ Nachrichten von seiner untergeordneten Klasse seiner übergeordneten Klasse, der „Desktop“-Klasse.

Code:

class Computer {
void identify() {
System.out.println("This is Computer");
}
}
class Desktop extends Computer {
void identify (){
System.out.println("This is Desktop");
}
}
class Laptop extends Desktop {
void identify (){
System.out.println("This is Laptop");
}
}
public class DynamicBinding {
public static void main(String args[]){
Computer superObject=new Computer ();
Computer subObject=new Desktop (); // // upcasting : first level of heritance
Computer babyObject=new Laptop (); // // upcasting : second level of heritance
superObject.identify ();
subObject.identify (); //run time polymorphism happening in first level of heritance
babyObject.identify (); //run time polymorphism happening in second level of heritance
}
}

Ausgabe:

Dynamische Bindung in Java

Beispiel #3

Nehmen wir ein weiteres Beispiel für Laufzeitpolymorphismus im Fall der mehrstufigen Vererbung. In diesem Beispiel werden drei Vererbungsebenen berücksichtigt. In diesem Beispiel zeigen wir, wie die Methode feature() unterschiedliche Features anzeigt, je nachdem, mit welchem ​​Objekttyp sie verknüpft ist. Wenn es mit dem Typ „Kosmetik“ verknüpft ist, werden Nachrichten von einer übergeordneten Klasse angezeigt. Wenn es mit dem Typ „Parfüm“ verknüpft ist, zeigt es Nachrichten von seiner untergeordneten Klasse an. Auch in der zweiten Vererbungsebene zeigt es bei Zuordnung zum Typ „Deo“ Nachrichten von seiner untergeordneten Klasse seiner übergeordneten Klasse, der „Perfume“-Klasse. Auch in der dritten Vererbungsebene zeigt es bei Verknüpfung mit dem Typ „DeoStick“ Nachrichten von seiner untergeordneten Klasse seiner übergeordneten Klasse, der „Deo“-Klasse.

Code:

class Cosmetics{
void feature() {
System.out.println("Cosmetics are expensive");
}
}
class Perfume extends Cosmetics {
void feature(){
System.out.println("Perfume is soothing");
}
}
class Deo extends Cosmetics {
void feature(){
System.out.println("Deo is sometimes better than perfume");
}
}
class DeoStick extends Deo{
void feature(){
System.out.println("DeoStick is very handy");
}
}
public class RunTimePolymorphism {
public static void main(String args[]){
Cosmetics superObject=new Cosmetics ();
Cosmetics subObject=new Perfume(); // child object type : first level of heritance
Cosmetics sub2Object=new Deo(); // child object type : second level of heritance
Cosmetics sub3Object=new DeoStick(); // child object type : third level of heritance
superObject.feature();
subObject.feature(); //run time polymorphism happening in first level of heritance
sub2Object.feature(); //run time polymorphism happening in second level of heritance
sub3Object.feature(); //run time polymorphism happening in third level of heritance
}
}

Ausgabe:

Dynamische Bindung in Java

Fazit

Damit sind wir mit dem Thema „Dynamische Bindung in Java“ fertig. Schreiben Sie sich die in den obigen Beispielen genannten Codes in den Java-Compiler und überprüfen Sie die Ausgabe. Das Erlernen von Codes wird unvollständig sein, wenn Sie nicht selbst Code schreiben.

Das obige ist der detaillierte Inhalt vonDynamische Bindung 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
Vorheriger Artikel:Applets in JavaNächster Artikel:Applets in Java