Java 使用重写子类方法的超类方法
这是一个措辞奇怪的问题,如果是重复的,我道歉 假设我有一个类Java 使用重写子类方法的超类方法,java,inheritance,subclass,superclass,overriding,Java,Inheritance,Subclass,Superclass,Overriding,这是一个措辞奇怪的问题,如果是重复的,我道歉 假设我有一个类foo,其方法a调用方法b: public class foo { public void a() { b(); } public void b() { gamma(); } } 现在我有了一个子类bar,它扩展了foo public class bar extends foo { @Override public void b()
foo
,其方法a
调用方法b
:
public class foo
{
public void a()
{
b();
}
public void b()
{
gamma();
}
}
现在我有了一个子类bar
,它扩展了foo
public class bar extends foo
{
@Override
public void b()
{
theta();
}
}
如果我调用
bar.a()
,那么a
会使用超类中的b
方法还是子类中的b
方法?也就是说,将bar.b()
结束执行gamma
还是将结束执行theta
?它将使用子类中的方法b。这就是重写方法的要点。扩展其父类的子类可以自由创建更具体的方法实现。当对子类调用重写的方法时,将使用其专用方法代替超类的方法
如果调用bar.a(),a将使用超类中的b方法还是b方法
子类中的方法?也就是说,bar.b()最终会执行gamma吗
或者它最终会执行θ
它将使用
bar.b()
方法。这是的结果,询问没有问题,但是由于您已经编写了代码,您可以自己通过日志记录或将其写入控制台来检查代码。我总是很乐意做这样的实验来探索将要发生的事情——这样你有时可以找到新的方法来做一些你现在可能不会缩进的事情,但以后你会发现已经做了很有用。有时你可能会重新发明轮子,但带着好奇心,通过自己做各种各样的小事,你学到的不仅仅是答案