English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Declaración de métodos en Java/¿Qué ocurre cuando se declara el constructor como final?

Siempre que se defina un método como final, no se puedeSobrescritura Es decir, no puede proporcionar una implementación para el método final de la superclase desde la subclase.

Es decir, el objetivo de hacer un método final es evitar que se modifique desde el exterior (subclase).

Pero, si intenta sobrescribir un método final, se generará un error en tiempo de compilación.

Ejemplo

interface Person{
   void dsplay();
}
class Employee implements Person{
   public final void dsplay() {
      System.out.println("Esto es el método de visualización de la clase Employee");
   }
}
class Lecturer extends Employee{
   public void dsplay() {
      System.out.println("Esto es el método de visualización de la clase Instructor");
   }
}
public class FinalExample {}}
   public static void main(String args[]) {
      Lecturer obj = new Lecturer();
      obj.dsplay();
   }
}

Resultados de la salida

Employee.java:10: error: dsplay() en Lecturer no puede anular dsplay() en Employee
public void dsplay() {
            ^
método sobrescrito es final
1 error

Declarar el constructor como final

En la herencia, siempre y cuando extienda la clase. La subclase hereda todos los miembros de la superclase excepto el constructor.

En otras palabras, el constructor no se puede heredar en Java, por lo que no puedeSobrescrituraConstructor

Por lo tanto, no tiene sentido escribir final antes del constructor. Por lo tanto, Java no permite usar la palabra clave final antes del constructor.

Si intenta hacer esto, declarar el constructor como final generará un error de compilación, indicando "No se permite el modificador final aquí".

Ejemplo

En el siguiente programa Java, la clase Student tiene un constructor final.

public class Student {
   public final String name;
   public final int age;
   public final Student() {
      this.name = "Raju";
      this.age = 20;
   }
   public void display() {
      System.out.println("Nombre del estudiante: ",+this.name );
      System.out.println("Edad del estudiante: ",+this.age );
   }
   public static void main(String args[]) {
      new Student().display();
   }
}

Error de compilación

Al compilar, el programa anterior genera el siguiente error.

Student.java:6: error: el modificador final no está permitido aquí
   public final Student() {
               ^
1 error