エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【Java】オーバーロードって『なんのために』あるもの?【665日目】

注意。

自分なりの理解ですφ(・

オーバーロードって?

処理を場合によって変えるとかって話ではなく、
同じ概念だけど、挙動が違うのを実装する。多態性を実現するためのものって話なのかなって一つ自分の中で結論φ(・

『同じ概念』であるのは一番重要かな?
挙動って言うとちょっと語弊ありそうだけど、同じ名前を使っているってことを忘れなかったら、なんとなくわかりそう。

処理を場合によって変えるとかって話じゃないとは?

class XXX
{
    public int function aaa(int a) {
        return a;
    }

    public int function aaa(int a, int b) {
        return a + b;
    }
}

よし、オーバーロード!便利だなー

で終わらせる話じゃないよって話φ(・

『同じ概念』

class XXX
{
    public int function add(int a, int b, int c) {
        return a + b + c;
    }

    public int function add(int a, int b, int c, int d) {
        return a + b + c;
    }
}

これは両方とも足し算をするという同じ概念。
でも引数の数が違う。

そんなときに、オーバーロードがなかったら、同じ概念なのに別な関数を用意する必要がある。

同じ概念でも、処理が同じとは限らない

さっきのように、同じ概念を表している関数が、同じ処理をするとは限らない。

一つの概念に対して、複数の振る舞いがある。
その多態性に対して、プログラミング言語がどう立ち向かうか。

その立ち向かおうとした結果が、オーバーロードという手段なのではないでしょうかφ(・

ってことで、便利機能だからつーかおーじゃなく、ちゃんと正しい意味、正しく同じ概念でプログラムをかけてるかは確認して使いましょうφ(・