【发布时间】:2014-04-04 23:25:15
【问题描述】:
我有一个父类 A 和一个子类 B,B 覆盖了来自 A 的方法 f。
public class A
{
public String f()
{
return "A";
}
}
public class B extends A
{
...
public String f()
{
return "B";
}
public static void main(String[] args)
{
B b = new B();
A a = (A) b;
System.out.println(b.f()); //prints: B
}
}
我创建了一个 B 类型的对象 b,并将其强制转换为 A 类型并将其分配给 A 类型的变量 a,然后在 a 上调用方法 f。现在我希望调用父类的方法,因为我正在使用 A 类型的对象,但它没有,它调用方法的 b 版本(打印“B”而不是“A”下面的代码)。
为什么会这样?是设计决策还是技术限制?
【问题讨论】:
-
如果你想在
A中执行f的实现,你需要一个new A()。
标签: java inheritance