En este tutorial aprenderemos el uso de la palabra clave final. La palabra clave final se puede utilizar junto con variables, métodos y clases. Cubriremos los siguientes temas en detalle.

1) variable final
2) método final
3) lección final

1) variable final

las variables finales no son más que constantes. No podemos cambiar el valor de una variable final una vez que se ha inicializado. Echemos un vistazo al siguiente código:

class Demo{  

   final int MAX_VALUE=99;
   void myMethod(){  
      MAX_VALUE=101;
   }  
   public static void main(String args[]){  
      Demo obj=new  Demo();  
      obj.myMethod();  
   }  
}

Producción:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The final field Demo.MAX_VALUE cannot be assigned

	at beginnersbook.com.Demo.myMethod(Details.java:6)
	at beginnersbook.com.Demo.main(Details.java:10)

Obtuvimos un error de compilación en el programa anterior porque intentamos cambiar el valor de una variable final “MAX_VALUE”.

Nota: Se considera una buena práctica tener nombres constantes en MAYÚSCULAS (MAYÚSCULAS).

Variable vacía final

Una variable final que no se inicializó en el momento de la declaración se conoce como variable final vacía. Nosotros debe inicializar la variable vacía final en el constructor de la clase, de lo contrario, generará un error de compilación (Error: es posible que la variable MAX_VALUE no se haya inicializado).

Así es como se usa una variable final vacía en una clase:

class Demo{  
   //Blank final variable
   final int MAX_VALUE;
	 
   Demo(){
      //It must be initialized in constructor
      MAX_VALUE=100;
   }
   void myMethod(){  
      System.out.println(MAX_VALUE);
   }  
   public static void main(String args[]){  
      Demo obj=new  Demo();  
      obj.myMethod();  
   }  
}

Producción:

100

¿Cuál es el uso de la variable vacía final?

Digamos que tenemos una clase de Estudiante que tiene un campo llamado Roll No. Dado que Roll No no debe cambiarse una vez que el estudiante está registrado, podemos declararlo como una variable final en una clase, pero no podemos inicializar el roll no por adelantado. para todos los estudiantes (de lo contrario, todos los estudiantes tendrían el mismo número de registro). En ese caso, podemos declarar roll no variable como blanco final e inicializar este valor al crear el objeto así:

class StudentData{  
   //Blank final variable
   final int ROLL_NO;
	 
   StudentData(int rnum){
      //It must be initialized in constructor
      ROLL_NO=rnum;
   }
   void myMethod(){  
      System.out.println("Roll no is:"+ROLL_NO);
   }  
   public static void main(String args[]){  
      StudentData obj=new  StudentData(1234);  
      obj.myMethod();  
   }  
}

Producción:

Roll no is:1234

Lea más sobre la variable final vacía en Desbordamiento de pila es Wiki.

leer  Interfaces anidadas o internas en Java

Variable estática final no inicializada

Una variable estática final que no se inicializa durante la declaración solo se puede inicializar en un bloque estático. Ejemplo:

class Example{  
   //static blank final variable  
   static final int ROLL_NO;
   static{ 
      ROLL_NO=1230;
   }  
   public static void main(String args[]){  
      System.out.println(Example.ROLL_NO);  
   }  
}

Producción:

1230

2) método final

No se puede anular un método final. Esto significa que aunque una subclase puede llamar al método final de la clase padre sin ningún problema, no puede anularlo.

Ejemplo:

class XYZ{  
   final void demo(){
      System.out.println("XYZ Class Method");
   }  
}  
	     
class ABC extends XYZ{  
   void demo(){
      System.out.println("ABC Class Method");
   }  
	     
   public static void main(String args[]){  
      ABC obj= new ABC();  
      obj.demo();  
   }  
}

El programa anterior generaría un error de compilación, sin embargo, podemos usar el método final de la clase padre en la subclase sin ningún problema. Echemos un vistazo a este código: este programa funcionaría bien ya que no estamos anulando el método final. Esto muestra que los métodos finales se heredan pero no se pueden anular.

class XYZ{  
   final void demo(){
      System.out.println("XYZ Class Method");
   }  
}  
	     
class ABC extends XYZ{  
   public static void main(String args[]){  
      ABC obj= new ABC();  
      obj.demo();  
   }  
}

Producción:

XYZ Class Method

3) lección final

No podemos extender una clase final. Considere el siguiente ejemplo:

final class XYZ{  
}  
	     
class ABC extends XYZ{  
   void demo(){
      System.out.println("My Method");
   }  
   public static void main(String args[]){  
      ABC obj= new ABC(); 
      obj.demo();
   }  
}

Producción:

The type ABC cannot subclass the final class XYZ

Puntos para recordar:

1) Un fabricante no puede ser declarado definitivo.
2) La variable local final debe inicializarse durante la declaración.
3) Todas las variables declaradas en una interfaz son por defecto finales.
4) No podemos cambiar el valor de una variable final.
5) No se puede ignorar un método final.
6) Una clase final no heredable.
7) Si los parámetros del método se declaran finales, el valor de estos parámetros no se puede cambiar.
8) Es una buena idea nombrar la variable final en mayúsculas.
9) Finalizar finalmente y finalizar son tres términos diferentes. finalmente se usa en el manejo de excepciones y finalize es un método llamado por la JVM durante la recolección de basura.

leer  Herencia en la programación Java con ejemplos

Por avivcas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *