现有代码
class A
{
A()//A的构造函数
{
f(); // 调用f方法
}
protected void f()// 受保护的 f 方法
{
System.out.printf("这是 A 类的 f 方法!\n");
}
}
class B extends A
{
B()//B的构造函数
{
super();//调用父类(class A)的构造方法!
}
protected void f()//重写父类的 f 方法!
{
System.out.printf("这经 B 类重写的的 f 方法!\n");
}
}
class Main
{
public static void main (String [] args)
{
B bb = new B();
}
}
/*
代码所见:
类 A 的构造函数会调用f方法。
A 的protected void f方法被子类 B 重写。
(子类) B 的构造方法 会调用(父类) A 的构造方法。
问题
若该程序执行,调用的 f 方法是谁的? 为什么?
*/