¿Cuál es la diferencia entre sobrecarga y anulación de métodos? [duplicar]

Resuelto asked hace 12 años • 2 respuestas

¿Cuál es la diferencia entre sobrecargar un método y anular un método? ¿Alguien puede explicarlo con un ejemplo?

 avatar Sep 11 '12 23:09
Aceptado

La sobrecarga de métodos trata de la noción de tener dos o más métodos en la misma clase con el mismo nombre pero con diferentes argumentos.

void foo(int a)
void foo(int a, float b)

Anulación de métodos significa tener dos métodos con los mismos argumentos, pero implementaciones diferentes. Uno de ellos existiría en la clase principal, mientras que otro estará en la clase derivada o secundaria. La @Overrideanotación, aunque no es necesaria, puede resultar útil para imponer la anulación adecuada de un método en tiempo de compilación.

class Parent {
    void foo(double d) {
        // do something
    }
}

class Child extends Parent {

    @Override
    void foo(double d){
        // this method is overridden.  
    }
}
Hisham Muneer avatar Sep 11 '2012 16:09 Hisham Muneer

La anulación de métodos se produce cuando una clase secundaria redefine el mismo método que una clase principal, con los mismos parámetros. Por ejemplo , la clase Java estándar java.util.LinkedHashSetse extiende java.util.HashSet. El método add()se anula en LinkedHashSet. Si tiene una variable que es de tipo HashSety llama a su add()método, llamará a la implementación apropiada de add(), en función de si es a HashSeto a LinkedHashSet. Esto se llama polimorfismo.

La sobrecarga de métodos consiste en definir varios métodos en la misma clase, que aceptan diferentes números y tipos de parámetros. En este caso, el método real llamado se decide en tiempo de compilación, según el número y los tipos de argumentos. Por ejemplo , el método System.out.println()está sobrecargado, por lo que puede pasar entradas y cadenas, y llamará a una versión diferente del método.

Jainendra avatar Sep 11 '2012 16:09 Jainendra