Dynamisches Binden

Status
Nicht offen für weitere Antworten.

Mariem

Mitglied
hallo aller seits,

Ich habe ein paar Anfänger Fragen : ) Ich hoffe das ihr mir weiter helfen könnt:

Also ich habe zwei Klassen Student und Person, Student erbt von Person. In die beiden klassen befindet sich die gleiche Methode jedoch die Eingabeparameter sind nicht gleich. Und ich habe einer Klasse Book die von Document erbt! so:

Klasse Person:
Java:
    /**
     * Covariant in the argument.
     */
    public Document goCrazy2(Document document) {
        System.out.println("[Person] Covariant in the argument: " +
                document.toString());
        return (new Document("Whatever"));
    }

Klasse Student:

Java:
    /**
     * Covariant in the argument.
     */
    public Document goCrazy2(Book book) {
        System.out.println("[Student] Covariant in the argument: " +
                book.toString());
        book.setPages(100);
        System.out.println("          The number of pages of the book: " +
                book.getPages());
        return (new Document("Whatever"));
    }

jetzt kommt meiner Frage:
Ich habe 2 Statements:

Document d3 = p.goCrazy2(aBook);

und

d3 = ((Student)p).goCrazy2(aBook)

Ich verstehe nicht warum in der erste Zeile die Methode aus der Klasse Person aufgerufen wird und in der 2 Zeile die Methode aus der Klasse Student? wird hier dynamisch gebunden??
 
S

SlaterB

Gast
erst wird vom Compiler gebunden, dann dynamisch der Rest,

bei
> d3 = ((Student)p).goCrazy2(aBook)
sucht der Compiler die Methode mit dem Book-Parameter raus,
kann immer noch von einer weiteren SubKlasse überschrieben werden, aber goCrazy2(Document) ist raus

im anderen Fall andersrum und goCrazy2(Book) überschreibt nicht goCrazy2(Document)
 

Mariem

Mitglied
Danke SlaterB für deiner schnelle Antwort, Ich habe nicht genau verstanden was du mit "goCrazy2(Document) ist raus" meinst?? bedeutet es dass es zuerst bearbeitet wird?
Was mich wundert ist dass die Methode goCrasy2() in der Klasse Person ein Dokument als eingabe erwartet und trodzdem wird es bearbeitet und der Compiler mekert nicht?
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> nicht genau verstanden was du mit "goCrazy2(Document) ist raus" meinst?? bedeutet es dass es zuerst bearbeitet wird?

goCrazy2(Book) passt am besten, also wird das vom Compiler ausgewählt und vermerkt
"wenn du im Programm hier vorbeikommst, dann suche die Methode goCrazy2 mit Parameter Book"
daher ist die Methode goCrazy2(Document) für diesen Aufruf nicht mehr relevant, kann unmöglich aufgerufen werden

> und trodzdem wird es bearbeitet und der Compiler mekert nicht?

goCrazy2(Document) akzeptiert als Parameter auch Book, da Book von Document erbt,
ohne eine solche Möglichkeit wäre Vererbung recht nutzlos
 

Mariem

Mitglied
Ok, danke, also ich kann daraus interpretieren dasJava bei Eingabewerte nur das kontravarianz unterstützt und nicht das Kovarianz stimmt das ?? und wenn ja warum unterstützt es nicht bei Eingabewerte das Kovarianz?
 
S

SlaterB

Gast
ach du Schande, was sind denn das für Begriffe?

wichtig ist die Typsicherheit, zur Compilier-Zeit muss klar sein, ob die aufgerufene Methode vorhanden ist,
und wenn man an der Code-Situation ablesen kann, dass goCrazy2(Document) gemeint ist (da es goCrazy2(Book) aus Compiler-Sicht nicht gibt),
dann wäre es doch ein Unding, wenn dann zur Laufzeit eine andere, nicht überschreibene Methode gerufen wird,
damit ließen sich ja finale Methoden aushebeln
 

Mariem

Mitglied
Danke SlaterB:oops:, aber was mache ich wenn unsere Lehrerin sich mit solsche blöden Begriffe beschäfftigt :D da muss ich einfach durch ;)
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Polymorphie und Dynamisches Binden richtig nutzen Java Basics - Anfänger-Themen 11
M Dynamisches und statisches binden Java Basics - Anfänger-Themen 17
J Dynamisches/Statisches Binden ?? Java Basics - Anfänger-Themen 5
R dynamisches binden Java Basics - Anfänger-Themen 3
P dynamisches Binden klappt nicht so recht Java Basics - Anfänger-Themen 7
B Generische Typen für dynamisches Formular Java Basics - Anfänger-Themen 3
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
N Dynamisches Programmieren/Fibonacci Java Basics - Anfänger-Themen 1
O Schlange als dynamisches Feld - Aufwand Java Basics - Anfänger-Themen 16
S Klassen Objekt- Tabelle / Dynamisches 2Dimensionales Array für Objekte Java Basics - Anfänger-Themen 6
C Erste Schritte Dynamisches Array Java Basics - Anfänger-Themen 11
T Dynamisches abarbeiten von statischen Methode aus verschiedenen Klassen. Java Basics - Anfänger-Themen 5
U Klassen Dynamisches Casten? Java Basics - Anfänger-Themen 39
X Methoden [GWT] Dynamisches Textfeld PopUp erstellen Java Basics - Anfänger-Themen 6
L dynamisches erzeugen von array Listen Java Basics - Anfänger-Themen 7
R dynamisches zweidimensionales Feld erzeugen Java Basics - Anfänger-Themen 8
A dynamisches Array - Index Liste Java Basics - Anfänger-Themen 2
maddin86 3 Dateien gleichzeitig speichern in dynamisches Benutzerverzeichnis (Windows) Java Basics - Anfänger-Themen 4
A dynamisches Array simulieren Java Basics - Anfänger-Themen 8
M Dynamisches Casten mal wieder Java Basics - Anfänger-Themen 4
A Dynamisches casten Java Basics - Anfänger-Themen 19
M dynamisches Clipboard mit Buttons Java Basics - Anfänger-Themen 5
K dynamisches Array Java Basics - Anfänger-Themen 13
M Zweidimensionales dynamisches Array füllen Java Basics - Anfänger-Themen 2
Bernasconi dynamisches JDialog Java Basics - Anfänger-Themen 2
R Dynamisches Gegenerieren von Objekten Java Basics - Anfänger-Themen 25
S dynamisches array + konstruktor Java Basics - Anfänger-Themen 5
K dynamisches Array erzeugen Java Basics - Anfänger-Themen 5
X SelectManyCheckbox an SelectOneRadio binden? Java Basics - Anfänger-Themen 3
V kann ich eine TextProperty an eine booloan variabel binden ? Java Basics - Anfänger-Themen 2
S Problem bei dynamischen Binden für Refaktorisierung Java Basics - Anfänger-Themen 2
F Frage über Statisches binden Java Basics - Anfänger-Themen 1
T externe Datei fest an Projekt binden Java Basics - Anfänger-Themen 2
S Vector an Typ binden Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben