¿Cuál es la diferencia entre sobrecargar un método y anularlo en Java?
¿Hay alguna diferencia en la firma del método, el especificador de acceso, el tipo de retorno, etc.?
java
object-oriented
usuario63948
fuente
fuente
Respuestas:
Para sobrecargar un método con un nuevo método, el nuevo método debe tener una firma diferente. Es decir, dos métodos sobrecargados tienen el mismo nombre, pero diferentes parámetros. Aquí hay un ejemplo de dos métodos sobrecargados:
Según los tipos de parámetros, se llamará al método correspondiente. Tenga en cuenta que cambiar el tipo de retorno no es suficiente (aunque puede hacer esto adicionalmente).
Cuando se anula un método, el nuevo método tiene la misma firma y reemplaza el método anulado en algunos casos. Aquí hay un ejemplo de un método anulado:
La elección se realiza en función del tipo de objeto. Por ejemplo,
llamará al
someMethod
deB
. Puede (y debe) agregar la anotación @Override:Ahora, si cambia accidentalmente los parámetros en B, el compilador le informará que no está anulando someMethod () sino sobrecargándolo.
fuente
Sobrecarga, los métodos tienen el mismo nombre pero diferentes parámetros.
Anulando, la implementación dada en la clase base se reemplaza con la de la subclase.
fuente
Los conceptos sobre los que pregunta están cubiertos en tutoriales Java.
La explicación para anular se da de la siguiente manera:
La sobrecarga se explica en el tutorial de la siguiente manera:
La explicación anterior para la sobrecarga menciona las calificaciones discutidas en la lección titulada "Interfaces y herencia" :
fuente
La sobrecarga de un método generalmente se define como "proporcionar múltiples métodos disponibles con el mismo nombre, que difieren en el número y tipo de entradas y salidas". Por lo general, el concepto es que desea poder realizar la misma operación básica dados diferentes conjuntos de entradas: puede, por ejemplo, "agregar" dos valores de tipo numérico, sin embargo, generalmente es importante saber cuál es el tipo exacto de el valor es para que pueda aprovechar o planificar comportamientos específicos de ese tipo. Como tal, definiría un método para cada combinación de tipos numéricos (y / o colecciones) que desee admitir. Todos estos métodos tienen el mismo nombre, pero diferentes "firmas"; en tiempo de compilación,
Reemplazar un método generalmente se define como "proporcionar una implementación diferente en una clase derivada de un método con una firma particular definida en la clase base". Hay muchas razones para anular un método; Prácticamente todos ellos tienen en común el hecho de que la clase derivada tiene un conocimiento adicional de lo que debe hacerse, que la clase base no puede conocer. Hay dos sabores de anulación en la mayoría de los idiomas OO; la anulación puede reemplazar el método de la clase base, o puede extenderEl método de la clase base. La diferencia generalmente es que una clase derivada que está extendiendo una implementación de clase base llamará a la versión anulada de la clase base del método en algún momento durante la ejecución del método de anulación. Esto permite que las clases primarias "reutilicen" áreas comunes de la operación que están contenidas en la clase base.
fuente