版权声明:博客版权所有,转载注明出处。 https://blog.csdn.net/qq_33083551/article/details/81238275
今天在聊天时候,遇到个很有意思的程序。
在JAVA类的继承中,如果子类调用父类,父类中的方法为递归方法时,会遇到很有意思的问题。
//父类
class parentClass{
public int add(int i){
if (i==1)
return i;
else
return i+add(i-1);
}
}
//子类
public class PanboTestSuper extends parentClass {
public static void main(String[] args)
{
PanboTestSuper ts= new PanboTestSuper();
ts.test();
}
public int add(int i)
{
if (i==1)
return i;
else
return i*add(i-1);
}
public void test()
{
System.out.println( "1-100的和为:"+super.add(100));
}
}
我们来看看结果。:
程序运行结果为100,而不是5050.
解析:
首先,在代码中,调用了super来调用父类的方法,这个思想没有错。但是对super的理解不够。
System.out.println( "1-100的和为:"+super.add(100));
super 调用父类函数时,只会成功一次。
很神奇吧,
其实建议大家添加断点,自己跑一趟,一目了然。