generated at
overload
同名の関数を、引数や戻り地を異なる型で複数定義できる機能
引数の並び順もか
戻り値の型などもか
Static Dispatchであり、コンパイル時に呼び出すメソッドが決まる

Javaでの例
P C override#5d5180cf198270000031bc6bで定義したクラス
Pが親、CはPを継承した子供
共にhoge()というメソッドを持っている
java
public void piyo(P p) { System.out.print("Call P: "); p.hoge(); } public void piyo(C c) { System.out.print("Call C: "); c.hoge(); } // pはP型なので、上のpiyoが呼び出される P p = new P(); piyo(p); // Call P: Parent // cはC型なので、下のpiyoが呼び出される C c = new C(); piyo(c); // Call C: Child // xはP型なので、上のpiyoが呼び出される // しかし、Cの実体なのでp.hoge()の結果はOverrideされたものになる P x = new C(); piyo(x); // Call P: Child
最後の例を見ても分かる通り、実体が子クラスのものであっても、型がPなら呼び出されるのはp.hogeの方になる
もし、親にはあって子にはないメソッドfooが呼び出されたときは、fooがCにあるか探したあとでPにあるか探しに行く
子→親の順で呼ばれるメソッドが探されている