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