仮想関数 【virtual function】 仮想メソッド / virtual method
概要
仮想関数(virtual function)とは、オブジェクト指向プログラミング(OOP)で用いられる特殊なメンバ関数で、サブクラス(子クラス/派生クラス)で同じ関数を定義して機能を上書き(オーバーライド)できるもの。C++言語などで用いられ、C#では仮想メソッドという。クラスを構成するメンバ関数として定義されるが、サブクラスで同じ名前、引数、返り値の型を持つ関数を定義し直すことができる。サブクラスをインスタンス化するとサブクラス側の関数宣言が有効となり、スーパークラス側の元の関数宣言は無効となる。このような動作を「オーバーライド」(override)という。
関数宣言構文に「virtual」のキーワードを指定することで仮想関数であることを示すことができる。仮想関数自体も実装を持ち、サブクラスでオーバーライドしなかった場合はスーパークラスの実装がそのまま引き継がれて有効となる。
C++では、実装を持たず関数宣言のみの「純粋仮想関数」(pure virtual function)を定義することもでき、サブクラスで必ず実装を記述しなければならない。この機能は他の言語では「抽象メソッド」(abstract method)と呼ばれることが多い。
(2023.6.6更新)