的Test3.java:爲什麼超類B調用子類A的方法?
public class Test3 {
public static void main(String[] args) {
A a = new A();
}
}
class A extends B {
A() {
System.out.println("Now in A()");
}
void m() {
System.out.println("Now in m() of A");
}
}
class B {
B() {
System.out.println("Now in B()");
m();
}
void m() {
System.out.println("Now in m() of B");
}
}
輸出:
$ java Test3
Now in B()
Now in m() of A
Now in A()
爲什麼不 「現在在M B的()」 中輸出的第二行?
C++和Java是兩種不同的語言,並且對於多態性的規則略有不同。我建議你閱讀關於繼承性和多態性的書或教程。這個問題已經被多次解答。 – 2014-08-31 01:56:40
@ Code-Apprentice這與C++有什麼關係?此外,如果它已被回答之前,然後將其標記爲重複... – 2014-08-31 02:04:36
@AnubianNoob它與C++做的是,在C++代碼將按照OP期望行事。 – EJP 2014-08-31 02:10:37