sagen, dass ich den folgenden CodeWas ist die Verwendung von Java virtuelle Methodenaufruf?
public class A {
public void callme() {
System.out.println("Calling of class A function ");
}
}
public class B extends A {
public void callme() {
System.out.println(" Calling of class B fuction ");
}
public void Hello() {
System.out.println("hello guys");
}
}
und ein main(), das tut das folgende
public class Main {
public static void main(String [] args){
A a = new B();
B b = new B();
b = (B)a;
a.callme();
b.callme();
a.Hello(); // show error : Hello is undefined for method A
}
}
Das Buch sagt: „Sie das Verhalten bekommen, die mit dem Objekt, auf das das Variable zur Laufzeit bezieht sich habe ". Ok, ich bekomme Verhalten von B-Klasse, wenn eine Methode Callme aufgerufen wird, aber wenn ich auf die Methode Hello zugreifen, zeigt es einen Fehler, dass Hello für Methode A nicht definiert ist. Warum ist das?
Da die Variable 'a' vom Typ' A' und Klasse 'A' keine' Hello' Methode hat. – Jesper
Verhalten! = Schnittstelle – Fildor