自己在學(xué)習(xí)多態(tài)的時候有看到這么一個例子,但是不是很理解,如下://Test.javapublicclassTest{publicstaticvoidmain(String[]args){Ac=newC();c.add();//"C"}}classA{publicvoidadd(){System.out.println("A");}}classBextendsA{publicvoidadd(){System.out.println("B");}}classCextendsB{publicvoidadd(){System.out.println("C");}}有三個類,關(guān)系為C繼承B,B繼承C,同時三個類里面都有一個add()方法,此時如果創(chuàng)建Ac=newC();以后,再調(diào)用c.add();輸出是"C",說明是調(diào)用了C里面的add()方法但是如果我改成這樣:publicclassTest{publicstaticvoidmain(String[]args){Ac=newC();c.add();//"B"}}classA{publicvoidadd(){System.out.println("A");}}classBextendsA{publicvoidadd(){System.out.println("B");}}classCextendsB{//publicvoidadd(){//System.out.println("C");//}}即C里面沒有add()方法了,為什么輸出是"B",而不是"A"?我自己的理解是:我在創(chuàng)建c這個對象的時候是使用的A類似,那么如果C里面沒有add()方法,就無法重寫,應(yīng)該直接調(diào)用A里面的add()方法,但是實(shí)際情況好像并非如此,因此比較迷惑.希望能有前輩可以指點(diǎn)一二,不勝感激.
java 多態(tài)多個繼承的疑惑?
皈依舞
2019-07-06 23:45:41