
前の節ではクラスの「カプセル化」機能を学びました。クラスでは、
同じクラスの中に、同じ名前を持つメソッドを2つ以上定義する
ということができます。

このクラスには、「setChara()メソッド」というメソッドが3つあります。このように、
同じ名前の複数のメソッドを、同じクラス内に定義しておく
ということができます。これをメソッドのオーバーロードといいます。
ただし、メソッドをオーバーロードするときには、各メソッドの引数の型・個数が異なるようにしなければなりません。

上記のコードでは、3種類のsetChara()メソッドを呼び出しています。
- 引数が2個のもの
- 引数がchar型のもの
- 引数がint型のもの
であるsetChara()メソッドが、それぞれ正しく呼び出されています。つまり、
1つのメソッド名の使用で、引数の異なる複数の中から自動的に処理を行ってくれるのです。
「setChara」のような1つの名前が、その状況に応じて別々のはたらきを持つことを、多態性(ポリモーフィズム)といいます。
オーバーロードについての注意
最初に説明したように、オーバーロードするメソッドは、引数の型や数が異なっていなければなりません。
もし、引数の型と数が全く同じで、戻り値だけが異なる次の2つのメソッドをオーバーロードできてしまうとしたら、どうなるでしょうか?
- int setChara(int t)
- void setChara(int t)
すると、次のような呼び出しをしても、2つのうちどちらのメソッドか、判断できないでしょう。
setChara(37);
オーバーロードするとき、引数の型または個数が異なるようにしておきましょう。
最後に2つのint型の最大値を求めるメソッドと、3つのint型の最大値を求めるメソッドをオーバーロードしたプログラムを示します。

クラスに欠かせないフィールドやメソッドについての重要なしくみを、学んできました。次の章では、コンストラクタについて説明していきます。