【发布时间】:2015-04-21 06:52:33
【问题描述】:
例子:
class MainClass {
public doIt() {
...
else doIt();
}
}
class SubClass extends MainClass {
@Override
public doIt() {
super.doIt();
...
}
}
现在的问题是:
- 我调用 SubClass.doIt()
- MainClass.doIt() 被调用
- MainClass.doIt() 进行递归调用 doIt()
但是:调用 SubClass.doIt() 而不是 MainClass.doIt()
这是非常奇怪的行为,并且问题被编程了!我试图用 this.doIt() 调用递归,但这没有帮助。 有人有想法吗?
非常感谢您的回答,这个问题已经解决了。
【问题讨论】:
-
这就是你的多态性。
-
"这是非常奇怪的行为" 不是真的,
else doIt()与else this.doIt()相同,但this指的是当前实例,并且感谢动态绑定 (多态机制)来自最接近this的当前类型的类方法的代码被调用。由于与包含doIt的SubClass最接近的类是SubClass本身,因此调用此代码。 -
这是假定的行为。
标签: java recursion subclass mainclass