自己在學習多態的時候有看到這么一個例子,但是不是很理解,如下://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");}}有三個類,關系為C繼承B,B繼承C,同時三個類里面都有一個add()方法,此時如果創建Ac=newC();以后,再調用c.add();輸出是"C",說明是調用了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"?我自己的理解是:我在創建c這個對象的時候是使用的A類似,那么如果C里面沒有add()方法,就無法重寫,應該直接調用A里面的add()方法,但是實際情況好像并非如此,因此比較迷惑.希望能有前輩可以指點一二,不勝感激.
java 多態多個繼承的疑惑?
皈依舞
2019-07-06 23:45:41