質問: 度々お世話になります。 private finalなメンバクラスは何を防いでいるのですか。 メンバクラスをどっかのクラスが継承することはないように思えます。 もしかして、メンバクラスのメソッドのオーバーライドですか? 詳しいことをご存知のかた、教えてください。
回答: クラスに与える修飾子finalは「派生クラスを作れない具象クラス」という意味なので、privateなクラスに対して間違って派生クラスを定義することのないようにするという以上の意味はないと思います。 > > メンバクラスをどっかのクラスが継承することはないように思えます。 > > > privateなクラスAは限定的ですが継承できます。それはAを囲むクラスの別の内部クラスでAを継承するケースです。 ``` class Outer { private class A {} class B extends A {} } ``` 内部クラスAをprivateにするとOuterの外側からはAは見えませんが、OuterやOuter内の別の内部クラスからは見えるので、Aを派生させて別の内部クラスBを定義できます。 しかし上記のAをprivate finalとするとBの定義箇所で「Aはfinalなのでそれを継承できない」というエラーになってくれます。