JAVA达人进

来源:百度知道 编辑:UC知道 时间:2024/06/06 04:22:02
class Ttt
{
void mb()
{
System.out.println("3");
}
void mbf()
{
System.out.println("2");
this.mb();

}
}
class J extends Ttt
{
void mb()
{
System.out.println("1");
super.mbf();
System.out.println("4");
}
}
class T
{
public static void main(String[] args)
{
J a=new J();
a.mb();
}
}
结果是1232323.............然后益出
那个this.mb();在里面起什么作用???

由于超类Ttt的mb()方法被子类J所覆盖,因此J中的mb()方法就出现了自调用的情况,导致死循环。
mb()方法相当于:
void mb()
{
System.out.println("1");
System.out.println("2");
mb();
System.out.println("4");
}

输出如下:1212121212...直至栈溢出。

this表示调用当前对象所在类的方法。

你试着不要用J类中的mb方法覆盖Ttt中的mb方法(方法名换成不一样的),这样就可以得到你要的结果:1234

调用上面的mb() 方法,this就是自身对象引用