Statische Bindung

K

Killit

Gast
Ich hab grad ein Beispiel für dynamische Bindung erstellt:


Java:
public class Auto {

Public void ichbin(){

System.out.println(„Ich bin ein Auto“);
}
}

public class Mercedes extends Auto {

public void ichbin(){

System.out.println(„Ich bin ein Mercedes“);
}

public class BMW extends Auto {


public void ichbin(){

System.out.println(„Ich bin ein BMW“);

}
import java.util.List;

public class Test {

private List<Auto> Lol = new ArrayList<Auto>();

public void ausgeben(){

Auto a = new Auto();
Mercedes b = new Mercedes();
BMW c = new BMW();
Lol.add(a);
Lol.add(b);
Lol.add(c);

for( Auto e : lol ){

System.out.println(e.ichbin());

...


Ausgabe:

Ich bin ein Auto
Ich bin ein Mercedes;
Ich bin ein BMW






Ich weiß jetzt nicht genau, wie man ein Beispiel für statische Bindung schreiben könnte bzw versteh ich auch nicht ganz genau, wie das als code aussehen würde.
wenn ich z.B: mit super.ichbin(); aufrufen würde, wäre das ja immer noch dynamisch
kann mir jemand ein gutes Beispiel für statische Bindung schreiben?
 

faetzminator

Gesperrter Benutzer
Java:
public class Foo {

    static class A {

        String a = "statisch";

        String get() {
            return a;
        }
    }

    static class B extends A {

        String a = "dynamisch";

        @Override
        String get() {
            return a;
        }
    }

    public static void main(String[] args) {
        A a = new B();
        System.out.println(a.get()); // dynamisch
        System.out.println(a.a); // statisch
    }
}
 

Landei

Top Contributor
Java kann kein Multiple Dispatch. Man könnte das als eine Art statische Bindung auffassen, da ja keine dynamische Bindung stattfindet.

Java:
public abstract class Shape {
    
    public void intersects(Shape that) {
        System.out.println(this.toString() + " instersects with a Shape");
    }

    public void intersects(Circle circle) {
        System.out.println(this.toString() + " instersects with a Circle");
    }

    public void intersects(Triangle triangle) {
        System.out.println(this.toString() + " instersects with a Triangle");
    }
    
    @Override
    public String toString() {
        return "Shape";
    }
}

public class Circle extends Shape {
    @Override
    public String toString() {
        return "Circle";
    }
}

public class Triangle extends Shape {
    @Override
    public String toString() {
        return "Triangle";
    }
}

List<Shape> shapes = new ArrayList<Shape>();
shapes.add(new Circle());
shapes.add(new Triangle());
for(Shape s1 : shapes) {
    for(Shape s2: shapes) {
        s1.intersects(s2);
    }
}

Ausgabe:
Code:
Circle instersects with a Shape
Circle instersects with a Shape
Triangle instersects with a Shape
Triangle instersects with a Shape

Es wird also immer "statisch" die erste Version von [c]intersects[/c] gebunden, obwohl man dynamisch jeweils eine "besser passende" Version hätte finden können.

Natürlich ist dieses Verhalten hier eher ungünstig. Das "erwartete" Verhalten lässt sich mit Double Dispatch erziehlen.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
nur weil keine Vererbung stattfindet einen Code als Beispiel für statistische Bindung in Java zu verwenden ist etwas kühn,
dann könnte man ja auch im Auto-Beispiel ganz am Anfang die ichbin()-Methoden der Subklassen streichen, ob das akzeptiert wird?

ein derart kompilierter Code kann zur Laufzeit immer noch ausgetrickst werden wenn neue Unterklassen theoretisch erlaubt
und von außen übergeben oder zumindest per Reflection reingemogelt werden können,

eine richtig statische Bindung zur Laufzeit ist meiner Ansicht nach nur der Aufruf statischer + finaler Methoden + Variablen

----

dass zur Kompilierzeit die Signatur der Methode statisch gewählt wird statt Multiple Dispatch ist für sich gewiss interessant,
innerhalb der Java-Gegebenheiten letztlich aber nicht relevant zur aktuellen Frage, da gehts um was anderes
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H statische,dynamische Bindung Java Basics - Anfänger-Themen 4
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
P Klassen statische oder dynamische(?) Klasse Java Basics - Anfänger-Themen 3
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
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
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
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
L Dynamische Bindung Java Basics - Anfänger-Themen 3
W OOP Definition / Abgrenzung dynamische Bindung Java Basics - Anfänger-Themen 11
Arif OOP Die Bindung zwischen einem äußeren und einem inneren Objekt Java Basics - Anfänger-Themen 2
S Verwirrung - Dynamische Bindung greift nicht Java Basics - Anfänger-Themen 2
H Dynamische Bindung mit Interfaces und LinkedList Java Basics - Anfänger-Themen 7
W Bindung bzw warum wird diese Methode aufgerufen? Java Basics - Anfänger-Themen 5
W Dynamische Bindung Java Basics - Anfänger-Themen 3
H lose Bindung/Koppelung von Klassen -ja wie jetzt? Java Basics - Anfänger-Themen 10
P Dynamische Bindung Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben