Ningún lenguaje que conozca impone el llamado al método anulado. De hecho, algunos lenguajes permiten métodos de anulación que no se pueden anular (como usar la newpalabra clave en C #). Sin embargo, hay dos formas de abordar esto.
El primero es crear un método que no se pueda modificar (p. Ej., Uno que no virtualtenga la finalpalabra clave en C # o uno que tenga la palabra clave en Java) que llame a uno que no se pueda reemplazar desde fuera de la clase (p. Ej protected., En C #, Java o C ++).
class C
A
statement1
F
statement3
protected virtual F
statement2
y
class D inherits C
protected override F
statement4
C.F()
La anulación de clases Ces libre de anular Fy modificar su comportamiento, pero las personas que llaman desde fuera de la clase solo acceden a ella A.
Editar: como otros han señalado, esto se llama patrón de método de plantilla .
La segunda forma es usar un lenguaje que haga cumplir las precondiciones y postcondiciones especificadas en la clase base, como Eiffel o C # con contratos de código. No forzará la invocación de la clase base, pero el método anulado puede verse obligado a realizar las mismas declaraciones. El uso de aspectos también puede ayudar si el lenguaje permite que se hereden aspectos.