保護されたメソッドが、定義クラスから継承していないクラスからアクセスできるという事実は、常に私を悩ませてきました。サブクラスが機能の一部を定義できるようにするために、抽象クラスで抽象保護メソッドを頻繁に使用します。これらは実質的にプライベート メソッドであり、クラス階層の外で呼び出されることは意図されていません。ただし、保護されたメソッドはパッケージ内の任意のクラスから呼び出すことができるため、Java ではこれを言う方法がありません。
私の質問は、これを許可する設計上の根拠は何ですか? パッケージ内またはパッケージ外のランダムなサブクラスでのみ呼び出すことができるメソッドを必要とする有効なユースケースはありますか? 私はこのケースに出くわしたことがなく、他の人が持っているかどうか疑問に思っています.