Skip to main content

¿Qué es la anulación del método?

La anulación de métodos se usa en la programación orientada a objetos dentro de una jerarquía de herencia, y ocurre cuando un método definido en una superclase se redefine en una subclase. Por lo general, el método de la subclase hace algo diferente al método de la superclase o amplía la capacidad de la superclase, pero esto no tiene por qué ser así. La anulación del método ocurre cada vez que un método de superclase se redefine en una subclase, independientemente del contenido del método redefinido. Las firmas de método redefinidas deben ser exactamente las mismas.

Por ejemplo, una clase A puede contener un método llamado "doSomething", y este método no toma parámetros de entrada. Además, las clases B y C pueden ser subclases de la clase A. La clase B puede contener un método llamado "doSomething", que no toma parámetros de entrada, y la clase C puede contener un método "doSomething" que toma un número como parámetro de entrada. En este ejemplo, solo la clase B demostraría la anulación del método, porque su método "doSomething" tiene la misma firma de método que su superclase, clase A. El método "doSomething" en la clase C, por otro lado, demuestra la sobrecarga del método porque crea Un método completamente nuevo.

La herencia virtual en C ++ es otro ejemplo de anulación de métodos. Los métodos virtuales en superclases pueden o no implementarse, pero cualquier definición de subclase de ellos es una instancia de anulación de métodos. Cuando un método se anula en una subclase, el método de la superclase no se llama a menos que se invoque explícitamente. Con frecuencia se dice que esta forma específica de llamar a un método anulado "oculta" la implementación de la superclase.

Aunque la anulación de métodos es muy flexible, no todos los métodos pueden anularse, y hay momentos en que esta rigidez podría ser preferible. Tanto en Java como en C ++, se pueden aplicar palabras clave específicas en las firmas de métodos para evitar que un método se anule en una subclase. Para hacer esto, Java usa la palabra clave "final" y C ++ usa la palabra clave "const". La prevención de la anulación del método puede ser beneficiosa si una función particular siempre se debe modificar en todo el árbol de herencia.

En general, los métodos simples que obtienen pequeños datos no deberían ser anulados. Los casos que tienden a beneficiarse más de la anulación son cuando una subclase tiene como objetivo agregar funcionalidad a un método de superclase sin crear un método completamente nuevo para hacerlo. Los casos inusuales en los que un método necesita ser completamente renovado para un tipo específico de objeto también podrían beneficiarse de esta técnica. Siempre que se anula un método, es importante que el programador comente adecuadamente los métodos de superclase y subclase. Idealmente, estos comentarios deberían aclarar qué hace cada variante del método, así como cómo y por qué difieren.