Warum ermöglicht Java, die Sichtbarkeit geschützter Methoden in untergeordneten Klassen zu erhöhen?

abstract class Base{
      protected abstract void a();
}

class Child extends Base{
      @Override
      public void a(){
          //why is this valid
      }
}

Warum können wir die Sichtbarkeit nicht verringern, sondern erhöhen?

Auch muss ich umsetzenSchablonenmuster in denen die sichtbaren öffentlichen Methoden nur von der Basisklasse sein können.

Beispiel:

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
      }
}

Nun, wenn Java erlaubt, die Sichtbarkeit zu erhöhen, dann gibt es zwei Methoden, die öffentlich sichtbar sind?

Ich weiß, Schnittstelle ist eine Lösung, aber gibt es einen anderen Ausweg?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage