这是一个奇怪的措词问题,所以我很抱歉,如果它是重复的。使用重写的子类方法的超类方法
说我有一类foo
与方法a
调用方法b
:
public class foo
{
public void a()
{
b();
}
public void b()
{
gamma();
}
}
现在我有一个扩展foo
public class bar extends foo
{
@Override
public void b()
{
theta();
}
}
如果我叫bar.a()
一个子类bar
,将a
使用来自超类的b
方法还是来自子类的b
方法?也就是说,bar.b()
最终会执行gamma
还是最终会执行theta
?
询问没有问题,但是由于您已经编写了代码,您可以通过记录或直接将其写入控制台来自行检查。我总是乐于做这样的实验,以确定会发生什么 - 这种方式有时候可以找到新的方法来做某些事情,而这些事情你现在可能并没有缩进,但是稍后你会发现已经做到了。你有时可能会重新发明轮子,但是有好奇心,并且自己做所有的小事情你不仅仅是得到答案 – Wolfii 2013-03-09 20:47:26