¿Se puede utilizar la palabra clave final para un método?conceptos básicos de Java sobre la palabra clave final
Respuesta
! La palabra clave final
se puede aplicar a casi cualquier cosa, en cada caso significa "ya no puede cambiar esto".
Esto es lo que significa cuando se aplica a ...
una variable: Simplemente no se puede asignar a la variable un valor nuevo (transformándola así en una constante , por supuesto)
un método: no se puede volver a implementar (es decir, anular) este método en una subclase
una clase: no se puede definir una subclase
En cada caso, simplemente indicamos: una vez que se declara esta cosa, este es el último valor (o implementación) que jamás verá.
debe agregar una subsección en su respuesta que diferencie entre el caso cuando la variable apunta a un tipo primitivo vs tipo de referencia. ¿Tiene esto sentido? Luego eliminaré el -1 que te di. – Inquisitive
Aquí no hay distinción entre los tipos primitivos y de referencia. Supongo que está aludiendo al hecho de que los tipos de referencia pueden no ser inmutables, incluso si una variable que apunta a uno es 'final'. Si es así, eso queda fuera del alcance de la pregunta original. Sin embargo, le invitamos a que haga comentarios constructivos de la manera que crea que mejorará las respuestas existentes. Como esta respuesta tiene varios años y solo se ha visto 528 veces hasta la fecha, recomiendo centrar sus esfuerzos en las preguntas más actuales. – VoteyDisciple
su respuesta es engañosa para decir lo menos. Puede haber sido visto por n número de personas m veces, pero aún así es engañoso. La inmutabilidad toma una parte importante en el diseño de la clase. Así que definitivamente debería haber sido mencionado. – Inquisitive
Sí.
Usted puede hacer que un método final
public class A {
public static final void f() {
System.out.println("test");
}
}
En general, existen dos razones para hacer un método final
- Cuando un método es final, que "puede" ser inline.
- Cuando un método es final, el método es imposible de reemplazar.
Un caso más realista es un método final NO estático, ¿no? –
Sure can. Por lo que es imposible anular.
Claro, echa un vistazo a The Final Word on the Final Keyword
public abstract class AbstractBase
{
public final void performOperation() // cannot be overridden
{
prepareForOperation();
doPerformOperation();
}
protected abstract void doPerformOperation(); // must override
}
Sí, es posible declarar un método como final
. Eso significa que un método no puede ser anulado por sus subclases.
De The Java Language Specifications, Third Edition, Section 8.4.3.3:
Un método puede ser declarado final para evitar que las subclases sustituyan o ocultarlo. Es un error en tiempo de compilación para intentar anular u ocultar un último método .
Para obtener más información, la página Writing Final Classes and Methods de The Java Tutorials tiene más información.
Sí.
Un método final no puede ser anulado por subclases. Esto se usa a menudo para evitar que las subclases alteren comportamientos cruciales de la clase.
Como nota a las otras respuestas. Usted puede use final. En la práctica, rara vez veo gente usándola y no estoy seguro de por qué.
Mucho del código que escribo en estos días está destinado a entornos de subprocesos múltiples y tiendo a hacer que la clase final sea inmutable (si es una clase de valor) para que sea segura para hilos.
El problema con marcar algunos métodos como definitivos (y no como otros) es que está diciendo que hay algo especial en ese método y nada especial en los demás. Eso rara vez es lo que la gente realmente quiere decir en mi experiencia.
Si una clase está destinada a la herencia, debe mantenerla limpia y mantenerla pequeña para evitar efectos secundarios no deseados. Todo esto depende de si está escribiendo código para usted y su equipo o si está escribiendo para un público más amplio, es decir, una aplicación pública de un proyecto de código abierto o un proyecto comercial.
palabra clave final utilizan, sobre todo para restringir el user..Final puede ser 1) Variables 2) Métodos 3) Clase
Si haces última variable valor, entonces no se puede cambiar de la misma (que actúa como una constante) ..
Si hace que el método sea definitivo, puede usarlo (utilizando el concepto de herencia) pero no puede anularlo ...
último si hace la clase final, entonces no puede extenderlo ... Hay tanto sobre la palabra clave final en la visita de Java: http://javabyroopam.blogspot.com
sí, la palabra clave final se puede utilizar para un método. Preservará la inmutabilidad. evita que se rompan los métodos. Por ejemplo, supongamos que la implementación de algún método de la clase X supone que el método M se comportará de cierta manera. Declarar X o M como final impedirá que las clases derivadas redefinan M de tal manera que X se comporte incorrectamente.
- 1. Conceptos básicos sobre la configuración de replicación de RavenDB
- 2. duda en conceptos básicos de Java?
- 3. Conceptos básicos de socket
- 4. Conceptos básicos de Hector & Cassandra
- 5. Conceptos básicos sobre el uso de Microsoft Async Framework
- 6. Conceptos básicos sobre el generador de feed-how cómo
- 7. Conceptos básicos de numeración de la versión?
- 8. Conceptos básicos de la correlación cruzada normalizada
- 9. Palabra clave final de Java para las variables
- 10. Conceptos básicos de claves externas en MySQL?
- 11. Comenzar conceptos básicos de programación de juegos
- 12. SSAS 2008 Conceptos básicos: Tutorial
- 13. Conceptos básicos Introducción al uso de CHCSVParser
- 14. Pregunta sobre la palabra clave volátil
- 15. Conceptos básicos de procesamiento de imágenes
- 16. Aprendiendo los conceptos básicos de UIScrollView
- 17. conceptos básicos de píxeles independientes del dispositivo
- 18. Conceptos básicos de Android, libgdx y box2d
- 19. Conceptos básicos de juegos multijugador en línea
- 20. Aprendiendo los conceptos básicos de WCF
- 21. Conceptos básicos de REST con php
- 22. Conceptos básicos de Arduino UNO para C#
- 23. Conceptos básicos de I18n Para Yii Framework
- 24. ¿Cuál es el uso de la palabra clave final?
- 25. aumentar los conceptos básicos de la matriz comprimida
- 26. Conceptos básicos sobre la octava: cómo asignar variables de un vector
- 27. Conceptos básicos sobre la comprensión de datos dinámicos (bindPropety) En Flex
- 28. Jquery 'this' palabra clave y filtros básicos del selector
- 29. conceptos básicos de encriptación python con hashlib sha1
- 30. Conceptos básicos del diseño dirigido por la fuerza de D3
Mejor si puede hacer un "trabajo a domicilio" antes de hacer una pregunta. Preguntar está completamente bien. Sin objeciones de eso. Pero creo que deberíamos preguntar todo. Una búsqueda en Google dio esto como primer golpe. http://en.wikipedia.org/wiki/Final_%28Java%29#Final_methods –