オーバーロードとは?
オーバーロードとは、プログラミングにおける異なる種類・数の引数で同じ名前を持つ関数です。
多重定義とも呼ばれており、下記の関数を定義しています。
- A(int a, int b);//int型の関数
- A(float a, float b);//float型の関数
一見すると、どちらの関数が使用されるか判断できません。
実際には変数x・yのデータ型が使用されます。
オーバーライドとの違い
オーバーロードと類似している言葉として、オーバーライドがあります。
オーバーライドの意味は、サブクラスでスーパークラスのメソッドを再定義することです。
クラスの継承によって継承元となるスーパークラスのメソッドは、継承先でそのまま使用できます。
つまりサブクラスで定義することによって、適したメソッドに変更が可能です。
またオーバーライドは、オブジェクト指向プログラミングで頻繁に使用されるため、違いを理解しておきましょう。
オーバーロードするメリット・デメリット
ここまで、オーバーロードの概要や違いをお伝えしました。
続いて、オーバーロードするメリット・デメリットを解説します。
- オーバーロードするメリット
- オーバーロードするデメリット
それぞれ解説していきます。
オーバーロードするメリット
オーバーロードするメリットは、int,double,Stringといった引数の型が異なった場合でも、同じメソッド名を使用できる点です。
オーバーロードには引数の型が異なるprintleメソッドが多重で定義されており、引数によるメソッド名を少しずつ変更する必要がありません。
ほかにも、メソッド名を覚えなくても良いといったメリットもあります。
オーバーロードするデメリット
オーバーロードのデメリットは、過度に行った場合にプログラムを理解しづらく管理が難しくなる点です。
設計がしっかりしていないと、別々の処理が行われるメソッドが生まれて混乱を招く恐れがあります。
オーバーロードは便利な関数ですが、何に使用しても良いというわけではありません。
そのため、必要箇所を見極めて使用しましょう。
オーバーロードの使い方
ここまで、オーバーロードするメリット・デメリットをお伝えしました。
続いて、オーバーロードができない場合の使い方・対処法を解説します。
オーバーロードができない場合の対処法
オーバーロードができない場合は、引数の型と数、並び順を変えて定義しましょう。
そもそも、オーバーロードの引数の型や個数が同じでは使用できません。
理由は、引数とメソッド名が同じ場合、どちらを使用すれば良いか判断できないためです。
たとえ戻り値を変えた場合でも、引数が同じであれば使用できないので注意しましょう。
まとめ
今回は、オーバーロードの概要やメリット・デメリット、使い方を解説しました。
オーバーロードとは、プログラミングにおける異なる種類・数の引数で同じ名前を持つ関数です。
また、オーバーロードによるメリット・デメリットとして、「同じメソッド名を使用できる」「過度なオーバーロードはプログラムが理解しづらくなる」といった点が挙げられます。
本記事でお伝えしたオーバーロードできない場合の対処法も参考にして、理解を深めましょう。
【SNSフォローのお願い】
kyozonは日常のビジネスをスマートにする情報を毎日お届けしています。
今回の記事が「役に立った!」という方はtwitterとfacebookもフォローいただければ幸いです。
twitter:https://twitter.com/kyozon_comix