javaのオーバーライドの実用性
javaのオーバーライドってよく入門書で説明されているけど実用的な例がなくて
って人向けに説明します。
- クラスの継承がわかっている人
- オーバーライドを知っている人
- サーブレット開発を知っている人
向けに前提に話を進めます。
※知らない人はこちらに参考リンクがあります
オーバーライドとは?
オーバーライドについておさらいです
(既に知っている人向け)
オーバーライドとは直訳すると
『上書き』
になります。
言葉の通りで
『クラスの継承先に対してメソッドの上書きができる』
というのが、オーバーライドです。
例えばクラスAにdisplayメソッドが定義されていたとします。
クラスAに対してクラスBを継承します。
クラスBでdisplayメソッドを再度、定義することができます。
このような状態を
『クラスAのメソッドを継承先のクラスBでオーバーライドした』
と言います。

何の役に立つのか?
上記の説明だと、
と思うかもしれません。
そう感じた人は鋭いと思います。
そう!上記の例は全くの無意味です。
ではどんなところで役に立つのか?
javaの勉強で
一番最初にオーバーライドが活用されている事例は
サーブレットでdogetメソッドを定義する時
だと私は思っています。
(他にあったら教えてください。)
dogetメソッド
サーブレットのdogetメソッドとはどんなヤツかというと
サーブレット開発する際には
サーブレットクラスというものが必要です
そのサーブレットクラスは
HttpServletクラスを継承する
というお約束になっています。
ブラウザからGETリクエストが来た場合の処理は継承先のサーブレットクラスでdogetメソッドをオーバーライドし、dogetメソッド内に書く。
というお約束になっています。

これがjava開発者で一番最初に出てくるオーバーライドの例だと私は思っています。
要は何をしているのかというと
開発者側に勝手にメソッドを定義させないルール作り
というのがオーバーライドの1つの役割だと思います。
『GETリクエストの時は必ずdogetメソッドを定義してくださいね。』
という、
マニュアルをつくるのではなく、『オーバーライド』という形で必ず定義しないと動かない仕組みを作ることにより、プログラマーの品質や生産性を高めているのです。
初心者脱出への鍵
javaは今回説明したオーバーライドなど
java(というかオブジェクト指向)には
『理解はしたけど、どのように活用できるのか不明』
という技術がたくさんあります。
活用できないような技術を覚えても忘れるだけです。
なので、
どのように役立つのか調べて、
それでも役立つ事例がないのであれば一旦諦める
ことをお勧めします。
後で使うときになったらまた思い出せば良いのですから。