Dlaczego Java pozwala zwiększyć widoczność chronionych metod w klasie potomnej?
abstract class Base{
protected abstract void a();
}
class Child extends Base{
@Override
public void a(){
//why is this valid
}
}
Dlaczego nie możemy zmniejszyć widoczności, ale możemy ją zwiększyć?
Również muszę wdrożyćWzór szablonu w których widoczne metody publiczne mogą być tylko klasą bazową.
Przykład:
abstract class Base{
public void callA(){
//do some important stuff
a();
}
protected abstract void a();
}
class Child extends Base{
@Override
public void a(){
//why is this valid
}
}
Teraz, jeśli java pozwala zwiększyć widoczność, istnieją dwie metody widoczne publicznie?
Wiem, że interfejs to jedno rozwiązanie, ale czy jest coś innego?