La anulación de un método se puede evitar utilizando la palabra clave final
, del mismo modo cómo evitar la sobrecarga.¿Cómo evitar que un método se sobrecargue en Java?
Respuesta
No se puede hacer eso en Java.
Un método sobrecargado es básicamente otro método.
Un intento podía mirar (algo) como esto
void yourMethod(String arg) { /* ... */ }
void yourMethod(String arg, Object... prevent) {
throw new IllegalArgumentException();
}
pero no va a trabajar desde Java resuelve sobrecarga mirando el "mejor partido" o "firma más específica".
El método todavía se puede sobrecargar con un
void yourMethod(String arg, String arg2) { /* ... */ }
que se llama cuando se hace yourMethod("hello", "world")
.
Por cierto, ¿por qué quieres evitar la sobrecarga? Quizás hay otra forma de hacer lo que quieres?
Marque la clase final y no se puede extender. Sin embargo, eso puede vencer a otro propósito.
Si sobrecarga un método, ha creado un método con el mismo nombre pero diferentes tipos de parámetros. En Java, un método se define (en parte) en términos de sus parámetros y, por lo tanto, si dos métodos tienen el mismo nombre pero diferentes parámetros, entonces son manzanas y naranjas, es decir, no iguales. En resumen, no puede evitar que alguien cree nuevos métodos en una clase, que es esencialmente lo que está pidiendo.
Anulación y sobrecarga son técnicas diferentes. La sobrecarga es una forma de declarar múltiples métodos con los mismos nombres pero diferentes tipos de parámetros o diferentes no de parámetros.
La sobrecarga no es una técnica de OOP en absoluto. Es una propiedad útil que usa información estática en tiempo de compilación para dar dos funciones posiblemente no relacionadas con el mismo nombre en el código fuente. – Zorf
Gracias Lajla. No sabía que no era parte de OOP. – Sujee
Se eliminó la palabra 'OOP' de mi respuesta ya que entendí mal que la sobrecarga es una de las técnicas de OOP. – Sujee
Usted puede prevenir un método de ser sobrescritos por lo que es final, pero no se puede evitar que un método de ser sobrecargado . Bien técnicamente podrías hacer que la clase sea definitiva, para que no se puedan agregar métodos al crear una subclase, pero no creo que sea un buen diseño.
Los métodos se anulan, no se sobrescriben. –
Has tenido seis años para solucionar esto. Votando para borrar. – EJP
No puede. Porque es casi inútil.
Si desea sobrecargar el método handle(..)
pero no está permitido, en su lugar crearía doHandle(..)
.
Qué método sobrecargado se utiliza se determina en tiempo de compilación (en contraste con los métodos reemplazados, que se determinan en tiempo de ejecución). Entonces, el punto de sobrecarga es compartir un nombre común para operaciones comunes. Denegar eso es una cuestión de estilo de código, en lugar de cualquier otra cosa.
+1 por inútil. Un compilador nunca seleccionará (uno de) los métodos de sobrecarga en lugar de uno sobrecargado. –
Err ... ¿qué sentido tiene no permitir sobrecargar el método?
La protección contra Anulación está permitida porque puede ser realizada por otro programador que supuestamente está trabajando en otra parte del código y su clase es heredada de su clase.
La sobrecarga se realiza en la misma clase y lógicamente se supone que debe ser realizada por un programador que conoce este código y está trabajando en la misma parte del código.Por lo tanto, si conoce este código (teóricamente) y existe un peligro inherente en la sobrecarga, entonces ya debe saberlo porque conoce el código.
Dicho esto, la sobrecarga no se puede detener ya que otros ya han descrito.
simple! no llame a ese método sobrecargado.
public class Test
{
public void m(int a)
{
*your definition*
}
public void m(float a)
{
*your definition*
}
}
public static void main(Strings [] args)
{
Test t=new Test();
t.m(5);
}
- 1. Cómo evitar que se anule un método en C#
- 2. Evitar que se llame a un método antes que otro
- 3. ¿Impide que el cliente sobrecargue el servidor?
- 4. ¿Es posible evitar que un método se muestre en intellisense?
- 5. Cómo evitar que se anule una función en python
- 6. Cómo evitar, que URL.equals necesita acceso a internet en Java?
- 7. Evitar que una subclase de C# sobrescriba un método
- 8. Cómo evitar que un dll se cargue en otras aplicaciones
- 9. ¿Cómo evitar que un objeto se cree en el montón?
- 10. Cómo sobrecargue función Scala aplicar métodos
- 11. ¿Cómo puedo evitar que una clase se herede en C#?
- 12. Cómo evitar que JFrame se cierre
- 13. ¿Cómo puedo evitar que se genere un atributo de validación?
- 14. Cómo determinar rápidamente si un método se reemplaza en Java
- 15. ¿Cómo evitar que varios UIAlertView se acumulen?
- 16. ¿Puedo evitar que un método virtual heredado se anule en subclases?
- 17. ¿Cómo puedo evitar que se seleccione texto?
- 18. cómo evitar que Sinatra se ejecute?
- 19. ¿Evitar que UITableView se desplace?
- 20. Cómo evitar que GCC se alinee
- 21. ¿Cómo evitar que los colores se mezclen?
- 22. Cómo evitar que un div y su contenido se impriman
- 23. Java: Cómo evitar StackOverflowException
- 24. Cómo puedo evitar que un miembro de datos se serialice
- 25. ¿Cómo evitar que se desinstale una aplicación?
- 26. ¿Cómo evitar que un módulo se importe dos veces?
- 27. ¿Cómo evitar que se generen propiedades 'especificadas' en clientes WCF?
- 28. ¿Cómo se puede evitar que el texto se corte en un botón?
- 29. ¿Cómo llamar a un método en Java?
- 30. Evitar instanceof en Java
... como anulación :-) – aioobe