- ベストアンサー
【アクセス修飾子】アクセス修飾子無しのクラスにpublicなメソッド
アクセス修飾子無しのクラスのメソッドにpublicを付ける意味がわかりません。 class MyClass { public void method() {} } 例えばこのようなクラスがあったとします。 このクラスはアクセス修飾子無しで他のパッケージからはアクセス出来ない為、メソッドにpublicを付ける意味は無いと思うのですが、付けてもコンパイルは通ります。 何故なんだろう、と考えてみたのですが、例えばpublicなメソッドを持つpublicなクラスを継承し、そのメソッドをオーバーライドした時にメソッドにpublicを付けざるを得ない、あるいは、インターフェイス(暗黙的にメソッドにpublicが付く)を実装したときにメソッドにpublicを付けざるを得ない等、そういう場合に対応するための『遊び』みたいなものなのでしょうか? 御教授よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
お礼
こちらに書くべきでした。 重ねて、ありがとうございました。
補足
理解出来ました。 クラスがprivateでも、そのメソッドに全くアクセス出来ない訳ではないんですね。 つまり、privateな内部クラスのオブジェクトをクラス内で生成し、それをスーパークラスの型の参照変数に入れ、getメソッドのような形でパッケージの外に渡せば、そのprivateな内部クラスのpublicなメソッドが(スーパークラスのメソッドをオーバーライドしたもの限定で)使えますね。 使いたいメソッドがオーバーライドされたものであることがポイントかなと思いました。 具体的な例をありがとうございました。