子类方法中引用了父类中非同名方法,但该父类引用了该子类同名父类方法(有点绕,第一次发帖)
代码
package ydZh;
class J_SuperClass
{
void mb_method(){
System.out.println("J_SuperClass::mb_method");
}
void mb_fun(){
System.out.println("J_SuperClass::mb_fun");
this.mb_method();
}
}
class J_SubClass extends J_SuperClass
{
void mb_method(){
System.out.println("J_SubClass::mb_method: Begin");
super.mb_fun();
System.out.println("J_SubClass::mb_method: End");
}
}
public class J_Test
{public static void main(String[] args)
{
J_SubClass a = new J_SubClass();
a.mb_method();
}
}
第一次发帖,不知道有什么规矩,多多包涵!!!!
[解决办法]
如果你对死循环有疑问,你是不是觉得: J_SuperClass的mb_fun()方法中this.mb_method();应该是调用J_SuperClass的mb_method(),而不是J_SubClass的mb_method(),是吧??
这里最主要的,其实就是this关键字。this指向的总是new 后面的那个类对象!也就是这里的:J_SubClass。
所以就很好理解,为什么会死循环了。因为:this.mb_method()调用的是J_SubClass里的mb_method()。
[解决办法]