- class Fu{ void show() { System.out.println("Fu"); } } class Zi extends Fu{ void show() { System.out.println("Zi"); } } public class Dream { public static void main(String args[]) { Fu f=new Zi(); f.show(); } } f调用show()方法,输出的结果是 “Zi”,因为覆盖了,可是把Fu类的show()方法删除为什么会报错?既然多态了,f指向Zi类,那么不可以去Zi类中找show()方法吗?

java多态和继承中,方法的调用
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
7条回答 默认 最新
- legendCoder 2017-10-10 07:15关注
Fu f=new Zi()这句话是父类的变量指向子类实例对象。但是f始终是父类类型的一个变量,父类中没有的方法是不能调用的。之所以f.show()显示的是zi,是因为子类show方法覆盖了父类show方法,相当于重写了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报