Tengo este error del compilador:No se puede reducir la visibilidad del método método heredado del padre
You cannot reduce the visibility of a inherited method.
tengo el siguiente código
class Parent {
public void func() {
System.out.println("in Parent");
}
}
public class TestClass extends Parent {
public static void main(String args[]) {
parent obj=new TestClass();
obj.addTest();
}
private void func() {
System.out.println("in child");
}
}
Aquí clase padre tiene func()
método que es público y anulado por el subclase TestClass
que es privada. Ahora el compilador arroja el error de que no puedo reducir la visibilidad. Para decir técnicamente, cada vez que creo un objeto de TestClass
asignando al objeto padre de tipo, ya que el método func()
está anulado, el func() de TestClass se va a llamar siempre, entonces ¿por qué deberíamos cuidar la visibilidad? ¿Cuál es la razón detrás de este error? ¿Puede alguien explicarme claramente?
Gracias Bohemain. Tengo el motivo. Gracias por señalar los estándares de nombres. – Mojoy
Hola ... Esto me hace pensar ¿por qué no puedo tener el modificador protegido en clase para un método que es público en superclase? ¡Como se puede acceder al modificador protegido dentro del paquete y subtipos de cualquier paquete! – Mojoy
los métodos 'protected' no son visibles para otras clases arbitrarias, pero el método' public' de super es así que se aplica el mismo razonamiento. * Cualquier * reducción en la visibilidad es un error. – Bohemian