引数の型や個数を見て処理を振り分けるのはオーバーロードとは違うと思う。
オーバーロードは、引数の型や個数を関数を区別する情報の一部として扱うことで、
それぞれ別個の関数を定義する仕組み。
実行時に引数を見てシミュレートすることはできるだろうけど。