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?