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?

questionAnswers(4)

yourAnswerToTheQuestion