Archiv verlassen und diese Seite im Standarddesign anzeigen : JAVA - Dynamische Bindung
public class DynBind06{
public static void main (String args[]){
Hund h = new Hund();
Maus m = new Maus();
laerm(h); <------ Problem
laerm(m); <------- Problem
}
static void laermImHaus(Haustier h){
System.out.println(h.laerm());
}
}
class Haustier{
String laerm(){
return "...";
}
class Maus extends Haustier{
}
class Hund extens Haustier{
String laerm(){
return "WAU WAU";
}
}
nun soll als Ausgabe folgendes rauskommen:
...
WAU WAU
aber er bringt nur bei Problem: Die MEthode ist undefiniert für den type DynBind06, warum????
Laut buch soll das aber funzen.
mfg
Snoop
Ich denke das Buch möchte, dass Du die Methode "learmImHaus" aufrufst, und nicht learm, denn die "laerm"-Mehtode gehört ja zu allen Haustier-Objekten und nicht zu der DynBind06-Klasee.
Das ganze dann also so:
public class DynBind06
{
public static void main (String args[])
{
Hund h = new Hund();
Maus m = new Maus();
laermImHaus(h);
laermImHaus(m);
}
static void laermImHaus(Haustier h)
{
System.out.println(h.laerm());
}
}
HTH
fs111
Nein im Buch steht
laerm(h);
laerm(m);
aber wenn ich laermImHaus(h) schreibe geht das nicht weil dann auch ein fehler auftritt.
"The method laermImHaus(Haustier) in the type DynBind06 is not applicable for the arguments(Hund)"
Aber ich glaube schon das dort laerm(h) und laerm(m) stehen muss, aber ein konstruktor fehlt doch nicht oder seh ich das falsch??
mfg
Snoop
wenn ich schreibe :
String test1 = h.laerm();
String test2 = m.laerm();
System.out.println(test1+" "+test2);
dann kommt die ausgabe: WAU WAU ...
Aber was hat das dann noch mit dynamischer Bindung zu tun??? das ist ja dann nur noch einfaches referenzieren.
aber wenn ich laermImHaus(h) schreibe geht das nicht weil dann auch ein fehler auftritt.
"The method laermImHaus(Haustier) in the type DynBind06 is not applicable for the arguments(Hund)"
doch, das geht. Der Fehler muss bei dir im Programmcode liegen.
MfG Xare
"The method laermImHaus(Haustier) in the type DynBind06 is not applicable for the arguments(Hund)"
Dann ist ein Fehler in Deinem Code. Da ja die Klasse Hund von Haustier erbt, darf er da nicht meckern, da ein-Hund Objekt auch ein Haustier-Objekt ist.
fs111
im Quelltext ganz oben fehlt bei dem 2ten extends das "d" aber das wa rnicht der fehler das hatte ich mich nur hier verschrieben.
Aber ich bin den quelltext nochmal durchgegangen zeichen für zeichen. Identisch abgeschrieben aus dem buch und wieder bei den beiden Problemstellen:
"The Method laerm(Hund) is undefined for the type DynBind06"
"The Method laerm(Maus) is undefined for the type DynBind06"
ich weis auch nicht warum aber das sourcefile ist eins zu eins übertragen.
ka warum das nicht will. Das ist das erste Beispiel was nicht funzt aus diesem Buch.
mfg
Snoop
gut ich habe jetzt auch nochmal das ganze mit laermImHaus(h) und laermImHaus(m) gemacht und es geht. Aber dann ist das ein Fehler im Buch, weil da steht nur laerm(h) und laerm(m). *ggg* nen Bug darf ich ihn behalten. ^^
naja
hab mir das nochmal durch den kopf gehen lassen. Das dort nur laermImHaus stehen kann, weil dann ergibt das auch sinn.
*klick*
jetzt auch das system verstanden was hintder der dynamischen bindung steht. =)
Am besten schreib dem Autor, dass er einen Fehler hat, das ist ja für spätere Auflagen nur gut, wenn sowas korrigiert wird.
fs111
hab grad dem author nem Dr. Thomas Kröckertskothen eine Email zukommen lassen. 12 Leutz haben das Buch korrektur gelesen vom Ing. - zum Prof. Dr. alles dabei.
Naja aber auf 200 seiten 1 Fehler ist schon Respektiv gut.
Hab das Buch ja schon zur Hälfte jetzt durch und somit zur Hälfte Korrektur gelesen. ^^
Snoop
Wäre interessant, ob Du eine Rückmeldung erhälst. Bitte poste das hier dann doch bitte (muss ja nicht die Mail sein, sondern nur sinngemäß).
fs111
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.