Métodos privados y finales en Java

Cuando usamos el especificador final con un método, el método no se puede anular en ninguna de las clases heredadas. Los métodos se hacen definitivos debido a razones de diseño.
Dado que los métodos privados son inaccesibles, son implícitamente definitivos en Java. Por lo tanto, agregar el especificador final a un método privado no agrega ningún valor. De hecho, puede causar confusión innecesaria.

class Base {
  
   private final void foo() {}
  
   // The above method foo() is same as following. The keyword 
   // final is redundant in above declaration.
  
   // private void foo() {}
}

Por ejemplo, tanto el ‘programa 1’ como el ‘programa 2’ a continuación producen el mismo error de compilación «foo() tiene acceso privado en Base».

Programa 1

// file name: Main.java
class Base {
    private final void foo() {}
}
   
class Derived extends Base {
    public void foo() {} 
}
   
public class Main {
    public static void main(String args[]) {
        Base b = new Derived();
        b.foo();
    }
}

Programa 2

// file name: Main.java
class Base {
    private void foo() {}
}
   
class Derived extends Base {
    public void foo() {} 
}
   
public class Main {
    public static void main(String args[]) {
        Base b = new Derived();
        b.foo();
    }
}

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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