自己在学习多态的时候有看到这么一个例子,但是不是很理解,如下://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()方法,但是实际情况好像并非如此,因此比较迷惑.希望能有前辈可以指点一二,不胜感激.
紫衣仙女
忽然笑
相关分类