子类方法a中调用父类的方法b,在父类的方法b中调用父类自己的另一个方法c,子类重写这个c方法后,为什么父类会调用到子类重写的c方法?
实际上父类里面,b调用c是不是会走到子类的c方法,是不一定的,要看你创建的对象本身是父类还是子类的实例,如果是父类的实例,b调用c只会走到父类的c方法,只有创建子类的实例的时候,才会走到子类的c方法。因为java查找方法的时候,要看首先这个对象是哪个类的实例,优先以这个类为对象搜索。
这个问题设计到两个基础知识的工作原理
解释一下上面的问题:
子类方法 a 中父类方法 b,重点是调用方法 a 的实例是子类实例,虽然没有说明,但是可以猜出来。虽然后面进入了父类的方法,但是实例只要是子类的,还是会优先查找子类的方法列表,找不到再去查找父类的方法列表。
主要原因是你的子类重载了父类的方法。父类的方法相当于被隐藏了一样。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。