java - 如何调用正确的重载方法?
问题描述
我有一个A类和一个子类B。A类有一个方法foo()
调用C.test(this)
. 在C类中,有两种方法:test(A a)
和test(B b)
。每当A.foo()
调用时,test(A a)
都会使用该方法。这对我来说似乎很正常。但是,无论何时B.foo()
调用,都会test(A a)
使用该方法,而不是test(B b)
(这是我想要的)。这让我很吃惊。
为什么会这样?如何更改我的代码结构以获得我想要的行为?
解决方案
我将假设您没有A#foo
在B
. 所以当A#foo
被调用时,this
指的是A
自从方法运行在A
. B
要解决此问题,您可以通过B#foo
使用与其父对象相同的实现 来覆盖该方法。this
然后将引用B
而不是,并且将调用A
正确的方法。C
推荐阅读
- python - 为什么转义字符 \b 显示未知字符?
- python - 如何从文本文件中获取第一个单词删除\ n - python
- angular - 绑定一个
- python - 使用循环从 NetCDF 生成多个底图
- python - Python - 刽子手
- php - 将数组作为 POST 请求参数发送到 PHP - Swift
- laravel - DELETE 方法在 PHP 变量中不起作用
- android - 我的 colors.xml 文件没有显示主题颜色。一切都是灰色的。如何解决这个问题?
- sapui5 - 使用 SAP UI5 动态呈现视图元素
- c# - 收到错误“Type Universe 无法解析程序集:System.Runtime,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a。”