オーバーロード【overload】

関数やメソッドのオーバーロードでは、処理内容が同じか類似しているが引数の型や個数、並び順が異なる複数の定義を用意しておく。プログラムから呼び出される際には、呼び出し側が指定した引数の組み合わせ(これを「シグネチャ」という)に基づいて、対応する定義がコンパイラや処理系によって選択・実行される。
例えば、整数を受け取る add(int, int) と浮動小数点数を受け取る add(float, float) を同名で定義しておけば、渡す値の型に応じて自動的に使い分けられる。処理内容が類似した機能に対して別々の名前を付ける必要がなくなり、開発者は共通の名称で様々なデータ型を扱えるようになる。
言語によっては演算子のオーバーロードに対応しているものもあり、既存の演算子記号に対して被演算子のデータ型ごとの振る舞いを定義できる。例えば「+」演算子であれば、数値に対しては算術加算を、文字列に対しては連結を行うといった使い分けが可能になる。C++やPython、Kotlinなどはこの機能をサポートしており、独自に定義したクラスのオブジェクトに対しても演算子の動作を指定できる。一方、JavaやC#では演算子オーバーロードの対応範囲が限定的であるなど、言語によって仕様は異なる。
なお、名称が似た概念に「オーバーライド」(override)がある。オーバーライドは継承関係にあるクラスで、親クラスのメソッドを子クラスで再定義して動作を変更する仕組みを指す。同一スコープ内で引数を変えて並列に複数の定義を置くオーバーロードとは目的も動作も異なる。