子类重写父类的函数后,在子类该函数中调用原父类的函数,出现的问题求解释。

ACM_Napoleon ACM_Napoleon 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
看代码
class A {
void f(int a) {
if(a == 0) return ;
System.out.println(".....: " + a);
f(a - 1);
}
}
class B extends A{
void f(int a) {//如果不重写,写一个新的函数的话,和我 预料的一样
System.out.println("WTF");
super.f(a);
}
}

public class Main{
public static void main(String args[]) {
B t = new B();
t.f(5);
}
}

输出:
WTF
.....: 5
WTF
.....: 4
WTF
.....: 3
WTF
.....: 2
WTF
.....: 1
WTF
我认为应该输出:
WTF
.....: 5
.....: 4
.....: 3
.....: 2
.....: 1

在子类中如果不重写f,写一个新的方法的话,和我预料的一样,是下面的输出。
我不明白为什么会出现第一种的那种输出,为什么会多输出“WTF”

求解释。。。
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
ACM_Napoleon
Java SE 62,620 成员 307,251 内容