Como privado, protegido y público (modificadores de acceso) afectan la accesibilidad y el alcance del campo. Por lo tanto, el método no puede ser privado y se llama desde fuera de la clase.
En el Programa 1: Creamos el objeto para la clase Derivada y llamamos a la función foo, pero esta función foo es privada, es decir, su alcance está solo en la clase Derivada, lo que genera un error cuando queremos acceder a través de la clase Principal.
En el Programa 2: creamos el objeto para la clase Derivada y llamamos a la función foo, y esta función foo es pública, por lo que no dará un error porque podemos acceder a esto desde cualquier parte del paquete.
En el Programa 3: Aquí creamos el objeto para la clase base y luego llamamos a la función foo, ahora la función foo en la clase Derivada y Base debe ser pública o protegida (nunca privada), porque el método privado tiene accesibilidad solo en ese ámbito.
Nota: la función llamada nunca debe ser privada porque su alcance solo está entre corchetes ({}) si la función llamada está en la clase base y la clase derivada la anula, entonces el método anulado en la clase derivada también será público o protegido.
Programa 1
Java
// file name: Main.java class Base { public void foo() { System.out.println("Base"); } } class Derived extends Base { // compiler error private void foo() { System.out.println("Derived"); } } public class Main { public static void main(String args[]) { Derived d = new Derived(); d.foo(); } }
Producción :
prog.java:10: error: foo() in Derived cannot override foo() in Base private void foo() { System.out.println("Derived"); } ^ attempting to assign weaker access privileges; was public prog.java:16: error: foo() has private access in Derived d.foo(); ^ 2 errors
Programa 2
Java
// file name: Main.java class Base { private void foo() { System.out.println("Base"); } } class Derived extends Base { // works fine public void foo() { System.out.println("Derived"); } } public class Main { public static void main(String args[]) { Derived d = new Derived(); d.foo(); } }
Derived
Programa 3
Java
// file name: Main.java class Base { public void foo() { System.out.println("Base"); } } class Derived extends Base { // if foo is private in derived class then it will // generate an error public void foo() { System.out.println("Derived"); } } public class Main { public static void main(String args[]) { Base d = new Base(); d.foo(); } }
Base
Este artículo es una contribución de Khushi Agarwal. Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
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