[問題] methods在多型跟繼承之間
下面是程式碼:
class P {
public void m(P p){ System.out.println("P::P"); }
public void m(Q p){ System.out.println("P::Q"); }//這一行
public void m(R c){ System.out.println("P::R"); }
}
class Q extends P {
public void m(P p){ System.out.println("Q::P"); }
public void m(Q q){ System.out.println("Q::Q"); }
public void m(R r){ System.out.println("Q::R"); }
}
class R extends Q {
public void m(P p){ System.out.println("R::P"); }
public void m(Q q){ System.out.println("R::Q"); }
public void m(R r){ System.out.println("R::R"); }
}
public class Q3 {
public static void main(String[] args) {
P pp = new P();
Q qq = new Q();
R rr = new R();
P pq = qq;
Q qr = rr;
pp.m(qq);
pq.m(pp);
pq.m(qq);
rr.m(pp);
qq.m(pq);
qq.m(qq);
((P) qq).m(qq);
((P) qq).m((Q) rr);
}
}
執行結果是
P::Q
Q::P
Q::Q
R::P
Q::P
Q::Q
Q::Q
Q::Q
現在問題是 如果把"//這一行"的method給註解掉後 執行結果是
P::P
Q::P
Q::P //這邊
R::P
Q::P
Q::Q
Q::P //這邊
Q::P
上面兩個"//這邊" 為什麼會是Q::P
而不是 Q::Q 勒????
我想不出一個道理來
希望各位高手們幫忙解釋一下
謝謝摟
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.41.143
推
04/30 16:41, , 1F
04/30 16:41, 1F
→
04/30 16:49, , 2F
04/30 16:49, 2F
→
04/30 16:52, , 3F
04/30 16:52, 3F
推
04/30 18:19, , 4F
04/30 18:19, 4F
→
04/30 18:21, , 5F
04/30 18:21, 5F
→
04/30 20:54, , 6F
04/30 20:54, 6F
→
04/30 21:34, , 7F
04/30 21:34, 7F