从理论上讲,如果需要,Child类不能覆盖父类的方法。但是它实际上在实际方面有什么影响?程序员将面临什么问题?
这是Java中的示例
public class Mammal {
public final int getNumberOfLegs() {
return 4;
}
}
public class Human extends Mammal {
@Override <<-- compilation error!
public int getNumberOfLegs() {
return 2;
}
}
在这里,我将Mammal
的方法声明getNumberOfLegs()
为final
,这意味着不允许在子类中重写该方法。
现在想象一下,如果Java不允许我重写子类中的任何方法,将会发生什么。我将无法在子类中实现具有不同行为的任何方法。
在一些简单的情况下,我将能够解决此问题。(在此示例中,我可以numberOfLegs
向所有Mammal
对象添加一个字段。)
在其他情况下,在类层次结构中共享常见行为会更加困难。(在我想到的示例中,您可以想象我没想到在子类中getNumberOfLegs()
可能不需要以不同的方式实现它。)现在,很明显,您可以通过修改父类的代码而不是在子类中重写代码来更改行为。然而:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句