继承,需要超级调用

时间:2015-09-09 02:06:42

标签: java inheritance

所以我对某些事情感到好奇,而且这不一定是我需要知道的事情,但仍然是好奇心。 你如何告诉它需要调用其父方法的继承方法? 一个例子就是在android上说:

@Override
public void onResume(){

}

方法会抛出错误,直到您将super.onResume();放在其中。

我知道如果父进程有一个必需的构造函数,但是方法调用,构造函数需要超级调用吗?

你如何告诉你的班级它可以有可继承的方法,但那些继承的方法需要调用它的父类?

2 个答案:

答案 0 :(得分:3)

Java没有办法要求重写方法来调用其超类实现。也不是(与构造者相反)你可以阻止它不止一次被召唤。

答案 1 :(得分:1)

  

如何告诉继承方法需要调用其父级   方法

Java编译器无法强制执行此操作,并且您可能不希望在一般情况下使用此功能。

  • 当子类重写超类方法时,如果需要,可以自由地将该方法替换为更适合其自身抽象的方法。在这种情况下,子类方法永远不会想要调用超类方法。

  • 许多子类方法补充了超类中的现有实现。在这种情况下,调用超类方法是自然而恰当的。

底线是开发人员可以根据其实现的需要自由调用或不调用。如果有一种方法可以通过某种方法声明来强制解决问题会导致编译器坚持所有子类调用超类方法,那会不会很好?也许...

这些细节通常是实现细节,是合同的一部分,在构思超类时应始终指定。这样的契约(例如Object.equals()契约)是extralinguistic规范,编译器的强大不足以强制执行。这些契约可以而且应该始终在超类文档中指定,以便所有实现者都知道道路规则。