質問: 同僚と議論していたのですが、有識者の方にもご意見を伺いたく質問させていただきました。 個人的には「サブクラスにpublicメソッドを定義すること」はNGと考えています。 理由はポリモーフィズムが破壊される(?)からです。 ただし、スーパークラスのpublicメソッドをオーバーライドするためにサブクラスで同名のpublicメソッドを定義するのは問題ないと思いますので、正しくは「サブクラスにて**スーパークラスには存在しない**publicメソッドを定義すること」がNGになります。 私自身オブジェクト志向をしっかりと理解している自信はないので、認識の間違いや他にも「こういう時はサブクラスにpublicメソッドを定義したほうがよい」といったケースがございましたらご教授いただけると嬉しいです。 どうぞよろしくお願いします。 追記 -- みなさまご回答ありがとうございました。 色々なご意見をいただき自信のプログラムの書き方を見直すきっかけにもなりました。 「トンカチをもつとなんでもクギに見える」とはまさにこのことですね。。 ベストアンサー悩ましかったのですが、maisumakunさんにさせていただきました。
回答: > > 理由はポリモーフィズムが破壊される(?)からです。 > > > されません。親クラスやインターフェースで参照する場合、サブクラス独自に作成したメソッドは**見えません**ので、ポリモーフィズムに何ら影響しません。