オーバーライドとは?おーばーらいど
オーバーライドとは、オブジェクト指向プログラミングで、親のクラスから引き継いだメソッドを、子のクラスで同じ名前・同じ引数のまま中身だけ書き換えること。クラスはデータと処理をひとまとめにした設計図、メソッドはクラスが持つ処理(関数)のことで、親のクラス(スーパークラス)の性質を子のクラス(サブクラス)が引き継ぐことを継承という。オーバーライドすると、同じ名前のメソッドを呼び出しても、実際に動く処理はそのデータがどのクラスのものかによって変わる。これが多相性(ポリモーフィズム:同じ呼び出し方で、相手に応じて違う動きをすること)を実現する手段になる。
最終更新:2026-10-10
この語が出る過去問を解く →背景
共通の部分を親のクラスにまとめておけば、子のクラスは同じ処理を書き直さずに済む。しかし、子のクラスごとに少しだけ振る舞いを変えたい場面は必ず出てくる。そのたびに別の名前のメソッドを作ると、呼び出す側が「このデータは円だからこの名前、長方形だからこの名前」と場合分けを書くことになり、種類が増えるほどプログラムが膨らむ。呼び出し方は親と同じにそろえたまま、中身だけを子のクラスで差し替えられるようにしたのがオーバーライドである。
具体例
親のクラス「図形」に「面積を求める」メソッドを用意し、子のクラス「円」では半径×半径×円周率、「長方形」では縦×横で計算するように、それぞれオーバーライドする。呼び出す側は、図形を並べた配列を順に取り出して「面積を求める」を呼ぶだけで、円なら円の、長方形なら長方形の計算が自動で選ばれる。Javaでは、すべてのクラスの親にあたるObjectクラスが「文字列にして返す」toStringメソッドを持っていて、自分で作ったクラスでこれをオーバーライドし、中身を読みやすく表示させるのがよく使われる例である。
試験での引っ掛け
オーバーロードとの取り違えが定番。オーバーロードは、同じ名前で引数の型や個数が違うメソッドを複数定義することで、継承がなくても1つのクラスの中で行える。オーバーライドは、継承した親のメソッドを子のクラスで、名前も引数も同じまま定義し直すことである。「引数が異なる」と書かれていたらオーバーロードの説明である。また、継承(親の性質を引き継ぐこと)そのものや、カプセル化(データを外から直接触らせず、決まったメソッド経由で扱わせること)の説明と入れ替えた選択肢にも注意する。
関連用語
出た過去問
出典:平成29年度 秋期 基本情報技術者試験 午前 問7(IPA)
オブジェクト指向プログラミングにおける、多相性を実現するためのオーバーライドの説明はどれか。
正解:スーパークラスで定義されたメソッドをサブクラスで再定義すること
要点:オーバーライドはスーパークラスのメソッドをサブクラスで再定義
オーバーライドは、スーパークラスで定義済みのメソッドを、同じ名前・同じ引数のままサブクラス側で定義し直すことをいう。これにより同じメソッド呼出しでも実際のオブジェクトの型に応じて振る舞いが変わり、多相性(ポリモーフィズム)が実現される。引数違いで同名メソッドを並べるオーバーロードとの区別が頻出である。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。