statische,dynamische Bindung

Status
Nicht offen für weitere Antworten.
H

Han

Gast
Hallo....was genau ist statische,dynamische Bindung?

Wann wird sie angewandt....in unserem Skript steht dazu zwar was, aber ich kann mir nicht wirklich darunter was vorstellen......benutzt die der Compiler wenn ich z.b. eine Testklasse zum Laufen bringen will.....und der Compiler greift dann wenn ich Verebung in meinem Programm angewandt hab auf die Art auf die Methoden zu?

im Skript:

statische Bindung (frühe Bindung)
Bindung der Methode erfolgt während der Übersetzung durch den Compiler

dynamische Bindung (späte Bindung)
haben unterschiedliche Objekte verschiedene Methoden gleichen Namens so wird beim Aufruf des Objekts zur Laufzeit anhand der Typsignatur die passende Methode gewählt.

Was ist das genau? Kann mir wer eine bessere Erklärung geben?

mfg,
Hannes
 
S

SlaterB

Gast
wann immer du an einem Objekt eine Operation aufrufst,
kann der Compiler zum Kompilierzeitpunkt nicht wissen, was das später zur Laufzeit für Folgen haben wird,

denn jede Klasse kann vererbt werden, eine Variable von der Klasse X also auch ein Objekt von der Klasse Y enthalten die von X erbt,
falls in Y die Operation überschrieben ist, dann wird eben deren Code ausgeführt,

eine Ausnahme sind vielleicht als final deklarierte Klassen/ Operationen

-----------

anders sieht es bei statischen Operationen einer Klasse aus, vielleicht auch bei privaten Objektoperationen oder noch anderen Spezialfällen an denen Polymorphie nicht auftreten kann,
dann weiß der Compiler schon beim Übersetzten welche Code folgt und kann den direkt verlinken statt die Entscheidung auf den Laufzeitzeitpunkt zu verschieben
 
G

Guest

Gast
Han hat gesagt.:
Hallo....was genau ist statische,dynamische Bindung?

...
im Skript:

statische Bindung (frühe Bindung)
Bindung der Methode erfolgt während der Übersetzung durch den Compiler

dynamische Bindung (späte Bindung)
haben unterschiedliche Objekte verschiedene Methoden gleichen Namens so wird beim Aufruf des Objekts zur Laufzeit anhand der Typsignatur die passende Methode gewählt.

Was ist das genau? Kann mir wer eine bessere Erklärung geben?

mfg,
Hannes

Die Erklärung im Script für dynamische Bindung ist zumindest verwirrend wenn nicht sogar falsch!

Ich würde es mal anders formulieren:

1. Hat eine KLASSE verschiedene Methoden gleichen Namens (overloading), so wird bei
Aufruf der METHODE anhand der Typsignatur die passende Methode z.Z.
der Übersetzung ausgewählt (frühe Bindung)

2. Ist ein Objekt Instanz einer Subklasse einer anderen Klasse und überschreibt die Subklasse
die GLEICHE Methode der Superklasse (gleiche Typsignatur) so wird bei Aufruf dieser Methode
diejenige aufgerufen, die in der Klasse der REALEN Instanz definiert wurde; unabhängig davon
nach welcher Klasse das Objekt deklariert wurde (dynamische Bindung).

Da die letzte Beschreibung ist auch nicht gerade verständlich ist :-( gebe ich mal 2 Beispiele.

(B1)

Code:
public void methode(int i)  // Methode 1
public void methode(long i)  // Methode 2

xxx.methode(42) // ruft Methode 1 auf
xxx.methode(42L) // ruft Methode 2 auf

(B2)

Code:
abstract class Figur {
  abstract public double fläche();
}

class Kreis extends Figur {
  double radius;
  public Kreis(double radius) {this.radius = radius;}
  public double fläche() {return Math.PI * radius * radius;}
}

class Quadrat extends Figur {
  double seite;
  public Quadrat(double seite) {this.seite = seite;}
  public double fläche() {return seite*seite;}
}

public class Main {
  public static void main(String[] args) {
    Figur[] figuren = new Figur[2];
    figuren[0] = new Kreis(5);
    figuren[1] = new Quadrat(5);
    System.out.println(figuren[0].fläche());   // gibt 78.53981633974483 aus
    System.out.println(figuren[1].fläche());   // gibt 25.0 aus
  }
}
CU
Leroy42
Code:
 

Bleiglanz

Gesperrter Benutzer
dynamische Bindung (späte Bindung)
haben unterschiedliche Objekte verschiedene Methoden gleichen Namens so wird beim Aufruf des Objekts zur Laufzeit anhand der Typsignatur die passende Methode gewählt.
ist doch irgendwie TOTAL irreführend

-> es geht nicht um den "gleichen Namen"
-> und es geht nicht primär um "anhand der Typsignatur"

sondern es geht um Objekte, deren Identität für den Compiler zur Übersetzungszeit nicht bekannt ist
Code:
public void leicht(Object o){
         System.out.println(o.toString());
}
der Compiler kann überhaupt nichts "binden", weil er nicht weiss, welches toString verwendet werden soll

wenn man das mit einer Instanz einer Klasse aufruft (die aber leider erst übermorgen programmiert wird), dann hängt eben alles davon ab, ob diese "toString" überschreibt oder nicht

deshalb kann die JVM (und nicht der Compiler) erst zur Laufzeit entscheiden (anhand der "übergebenen Objektinstanz") welche Methode aufgerufen werden soll

deshalb "dynamisch", und es trifft alle nicht als final deklarierten Methoden (hat gar nix mit "Namen" oder "Signatur" zu tun), und ich bin mir nichtmal sicher, ob final Methoden statisch gebunden werden?
 
H

Han

Gast
Aha...bei der dynamischen Bindung geht es also um Methoden die in den Subklassen bzw. Superklasse die gleiche Typsignatur aufweisen aber eine unterschiedlichen Wert,zugeschnitten auf die Subklasse, ausgeben.

figuren[0] = new Kreis(5);

Bei dieser Zuweisung kann ich ja mit figuren[0].methode() nur die Methoden und Variablen welche ich in der Superklasse figur definiert habe aufrufen, aber die die ich aufrufen kann sind dann trotzdem die von der Subklasse....und dass das die JAVA Virtual Machine kapieren kann braucht man dynamische Bindung oder?

mfg,
Hannes
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Klassen statische oder dynamische(?) Klasse Java Basics - Anfänger-Themen 3
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
V Variablen statische Variable einer Objektvariable zuordnen Java Basics - Anfänger-Themen 3
S Klassen statische Objekterzeugung vor Konstruktoraufruf??? Java Basics - Anfänger-Themen 6
Queiser Nicht statische Klassen Java Basics - Anfänger-Themen 6
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
C nicht statische Methoden Java Basics - Anfänger-Themen 4
D statische generische Methoden Java Basics - Anfänger-Themen 3
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
S Zufallszahl (Statische Attribute und Methoden) Java Basics - Anfänger-Themen 10
N Auf statische Methode zugreufen Java Basics - Anfänger-Themen 9
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
F Statische Klasse => Flaschenhals? Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5
S Datentypen nicht lineare STATISCHE Datenstruktur? Java Basics - Anfänger-Themen 10
E statische Variable ändert sich Java Basics - Anfänger-Themen 7
A Statische Variable in Methoden Java Basics - Anfänger-Themen 7
A Nicht-statische Methode in einer statischen aufrufen Java Basics - Anfänger-Themen 10
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
A statische Arraylist Java Basics - Anfänger-Themen 6
Q Variablen Statische Variablen Java Basics - Anfänger-Themen 8
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
V OOP Statische Klassen-Attribute vererben Java Basics - Anfänger-Themen 4
K Statische Bindung Java Basics - Anfänger-Themen 6
L Methoden Auf statische Methode einer anderen Klasse zugreifen, die Array zurückgibt Java Basics - Anfänger-Themen 3
S statische Methode nebenläufig Java Basics - Anfänger-Themen 2
R Aufruf statische Methode Java Basics - Anfänger-Themen 7
M Statische Methoden Java Basics - Anfänger-Themen 22
C Relativer Pfad - Statische Methode Java Basics - Anfänger-Themen 6
A Statische Methode "vererben" - Zwang durch annotation processor Java Basics - Anfänger-Themen 10
sqsh statische jlabels dynamisch verwalten Java Basics - Anfänger-Themen 2
S Statische Klassen/ Singleton Java Basics - Anfänger-Themen 13
E Statische Member können nicht vererbt werden? Java Basics - Anfänger-Themen 10
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
B statische Variable Java Basics - Anfänger-Themen 10
M Statische und nicht-statische Funktionen: Desktop.browse(uri); Java Basics - Anfänger-Themen 4
A Stilfrage: statische Methoden und Attribute auf jeden Fall verhindern? Java Basics - Anfänger-Themen 5
A Stilfrage: statische Variable mit Instanz der gleichen Klasse Java Basics - Anfänger-Themen 8
H Statische generische Methode Java Basics - Anfänger-Themen 2
A statische Attribute: Vererbung und Zugriff darauf Java Basics - Anfänger-Themen 15
hdi Observer als statische Klasse ? Java Basics - Anfänger-Themen 2
hdi statische synchronisation Java Basics - Anfänger-Themen 6
G statische ArrayList? Java Basics - Anfänger-Themen 8
K Statische Variablen von Objekten im Array Java Basics - Anfänger-Themen 15
K nicht-statische Methode aufrufen Java Basics - Anfänger-Themen 3
S statische variable initialisieren mit exception Java Basics - Anfänger-Themen 2
G statische Variable zugreifen bzw. setzen Java Basics - Anfänger-Themen 6
T in statischem Kontext auf nicht statische Variable beziehen Java Basics - Anfänger-Themen 5
M Statische Funktion Java Basics - Anfänger-Themen 2
M öffentliche nicht-statische Funktion fremder Klasse ausführn Java Basics - Anfänger-Themen 16
C args[] als statische Variablen speicher oder wie? Java Basics - Anfänger-Themen 12
P nicht statische methode instantiieren Java Basics - Anfänger-Themen 7
H statische methoden und sichtbarkeit Java Basics - Anfänger-Themen 13
nadoria statische Methoden (Klassenmethoden) Java Basics - Anfänger-Themen 3
K statische variablen und methode Java Basics - Anfänger-Themen 3
H Was ist nocheinmal eine statische Klasse? Java Basics - Anfänger-Themen 6
G Statische Methoden? Java Basics - Anfänger-Themen 2
kb statische methoden und throws exception Java Basics - Anfänger-Themen 2
H statische, dynamischer Typ von Variablen Java Basics - Anfänger-Themen 1
M Konstruktor eine statische Methode? Java Basics - Anfänger-Themen 9
N Unterschied statische Attribute u. Methoden <-> objekt Java Basics - Anfänger-Themen 4
O nicht-statische Inhalte auf statische Inhalte verweisen Java Basics - Anfänger-Themen 19
M wann statische klassen? Java Basics - Anfänger-Themen 14
U statische Variablen Java Basics - Anfänger-Themen 12
F Statische Methode - Nicht Statische Methode Java Basics - Anfänger-Themen 10
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
D Statische und Nicht-Statische Methoden Java Basics - Anfänger-Themen 7
K Statische Methoden!? Java Basics - Anfänger-Themen 8
ohneInformatik; Dynamische Zinsen. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
L Dynamische Anzahl an Arrays mit verschiedenen Namen erzeugen Java Basics - Anfänger-Themen 6
L Dynamische Bindung Java Basics - Anfänger-Themen 3
W OOP Definition / Abgrenzung dynamische Bindung Java Basics - Anfänger-Themen 11
J Dynamische Datenstrukturen Java Basics - Anfänger-Themen 0
L Variablen Dynamische Variablenname Java Basics - Anfänger-Themen 9
L Dynamische Programmierung Java Basics - Anfänger-Themen 0
M Schlüsselworte Dynamische Polymorhpie Java Basics - Anfänger-Themen 32
J OOP Dynamische Objektnamen Java Basics - Anfänger-Themen 6
Ste3et_C0st Dynamische While/For Schleife Java Basics - Anfänger-Themen 7
F Erste Schritte Dynamische Variablen Java Basics - Anfänger-Themen 15
M Dynamische Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 11
S Dynamische Variable ist? Java Basics - Anfänger-Themen 11
S Verwirrung - Dynamische Bindung greift nicht Java Basics - Anfänger-Themen 2
C Dynamische Referenz & abstrakte Klassen Java Basics - Anfänger-Themen 3
J Dynamische Liste durchsuchen + anpassen Java Basics - Anfänger-Themen 3
A Schlüsselworte dynamische Stringteilung Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben