1. ホーム
  2. java

メソッドをオーバーライドするとき、なぜアクセス数を増やすことはできても減らすことはできないのですか?

2023-08-20 21:51:43

質問

Java では、オーバーライドするメソッドのアクセス指定子は、オーバーライドするメソッドよりも多くのアクセスを許可することはできても、少ないアクセスを許可することはできないと指定されているのはなぜですか。たとえば、スーパークラスで保護されたインスタンスメソッドは、サブクラスでは公開にすることはできますが、非公開にすることはできません。

どのように解決するのですか?

これは OOP の基本原則です。子クラスは親クラスの本格的なインスタンスであり、そのため子クラスには 少なくとも同じ インターフェイスを提供しなければなりません。protected/public のものを見えにくくすると、この考えに違反することになり、子クラスが親クラスのインスタンスとして使用できなくなる可能性があります。