Hi,
Ich habe mal eine Frage zu folgendem Quellcode.
Warum gibt es in der 2. Zeile von unten "System.out.println("Class Name of o is "+ o.m() );" eine Fehlermeldung?
Müsste der Compiler nicht die Methode m() in der Klasse B1 erkennen?
Eigentlich müßte die dynamische Methode doch im dynamischen Typ zu finden sein (hier Klasse B1)?
Wenn die Methode m() in Klasse A1 nicht auskommentiert ist, dann wird die Methode m() in Klasse B1 erkannt und B1 ausgegeben.
Warum ist das so?
************************************************
class A1 {
public String wurst() { return "A-Wurst"; };
/*
public String m() {
return "A1";
}*/
}
class B1 extends A1 {
public String wurst() { return "B-Wurst jami jami"; };
public String m() {
return "B1";
}
}
public class Dynamisches_Binden {
public static void main(String[] args) {
A1 o = new B1();
System.out.println("Class Name of o is "+ o.m() );
System.out.println("Class Name of o is "+ o.wurst() );
}
}
************************************************
Für jeden Tipp dankbar.
Gruß
jimmy
Ich habe mal eine Frage zu folgendem Quellcode.
Warum gibt es in der 2. Zeile von unten "System.out.println("Class Name of o is "+ o.m() );" eine Fehlermeldung?
Müsste der Compiler nicht die Methode m() in der Klasse B1 erkennen?
Eigentlich müßte die dynamische Methode doch im dynamischen Typ zu finden sein (hier Klasse B1)?
Wenn die Methode m() in Klasse A1 nicht auskommentiert ist, dann wird die Methode m() in Klasse B1 erkannt und B1 ausgegeben.
Warum ist das so?
************************************************
class A1 {
public String wurst() { return "A-Wurst"; };
/*
public String m() {
return "A1";
}*/
}
class B1 extends A1 {
public String wurst() { return "B-Wurst jami jami"; };
public String m() {
return "B1";
}
}
public class Dynamisches_Binden {
public static void main(String[] args) {
A1 o = new B1();
System.out.println("Class Name of o is "+ o.m() );
System.out.println("Class Name of o is "+ o.wurst() );
}
}
************************************************
Für jeden Tipp dankbar.
Gruß
jimmy