オーバーロード【overload】

オーバーロードとは?

プログラミング言語において同名の関数やメソッド演算子を複数定義し、呼び出し時の引数の型や数に応じて適切なものが自動的に選択される仕組み。日本語では「多重定義」と訳される。
オーバーロードのイメージ画像

関数やメソッドのオーバーロードでは、処理内容が同じか類似しているが引数の型や個数、並び順が異なる複数の定義を用意しておく。プログラムから呼び出される際には、呼び出し側が指定した引数の組み合わせ(これを「シグネチャ」という)に基づいて、対応する定義がコンパイラ処理系によって選択・実行される。

例えば、整数を受け取る add(int, int) と浮動小数点数を受け取る add(float, float) を同名で定義しておけば、渡す値の型に応じて自動的に使い分けられる。処理内容が類似した機能に対して別々の名前を付ける必要がなくなり、開発者は共通の名称で様々なデータ型を扱えるようになる。

言語によっては演算子のオーバーロードに対応しているものもあり、既存の演算子記号に対して被演算子データ型ごとの振る舞いを定義できる。例えば「+」演算子であれば、数値に対しては算術加算を、文字列に対しては連結を行うといった使い分けが可能になる。C++やPythonKotlinなどはこの機能をサポートしており、独自に定義したクラスオブジェクトに対しても演算子の動作を指定できる。一方、JavaやC#では演算子オーバーロードの対応範囲が限定的であるなど、言語によって仕様は異なる。

なお、名称が似た概念に「オーバーライド」(override)がある。オーバーライドは継承関係にあるクラスで、親クラスメソッドを子クラスで再定義して動作を変更する仕組みを指す。同一スコープ内で引数を変えて並列に複数の定義を置くオーバーロードとは目的も動作も異なる。

他の辞典等による「オーバーロード」の解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。