ho ottenuto questo errore di compilazione:non può ridurre la visibilità del metodo di metodo ereditato dal genitore
You cannot reduce the visibility of a inherited method.
ho il seguente codice
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");
}
}
Qui classe genitore ha func()
metodo che è pubblico e sovrascritto dal sottoclasse TestClass
che è privato. Ora il compilatore lancia l'errore che non riesco a ridurre la visibilità. Per dire tecnicamente, ogni volta che creo un oggetto di tipo assegnando al tipo oggetto genitore, poiché il metodo func()
viene sovrascritto, funcClass di testClass verrà chiamato sempre, quindi perché dovremmo occuparci della visibilità? qual è la ragione di questo errore? Qualcuno può spiegarmi chiaramente?
Grazie Bohemain. Ho capito il motivo. Grazie per aver sottolineato gli standard di denominazione. – Mojoy
Ciao .. Questo mi fa pensare perché non posso modificare il modificatore in classe figlio per un metodo che è pubblico in super-classe? Dal momento che è possibile accedere al modificatore protetto all'interno del pacchetto e dei sottotipi di qualsiasi pacchetto !! – Mojoy
I metodi 'protected' non sono visibili ad altre classi arbitrarie, ma il metodo' public' del super è, quindi si applica lo stesso ragionamento. * Qualsiasi * riduzione della visibilità è un errore. – Bohemian