未分類

メソッドのオーバーロード

投稿日:

          

前の節ではクラスの「カプセル化」機能を学びました。クラスでは、

同じクラスの中に、同じ名前を持つメソッドを2つ以上定義する

ということができます。

このクラスには、「setChara()メソッド」というメソッドが3つあります。このように、

同じ名前の複数のメソッドを、同じクラス内に定義しておく

ということができます。これをメソッドのオーバーロードといいます。

ただし、メソッドをオーバーロードするときには、各メソッドの引数の型・個数が異なるようにしなければなりません。

上記のコードでは、3種類のsetChara()メソッドを呼び出しています。

  1. 引数が2個のもの
  2. 引数がchar型のもの
  3. 引数がint型のもの

であるsetChara()メソッドが、それぞれ正しく呼び出されています。つまり、

1つのメソッド名の使用で、引数の異なる複数の中から自動的に処理を行ってくれるのです。

「setChara」のような1つの名前が、その状況に応じて別々のはたらきを持つことを、多態性(ポリモーフィズム)といいます。

オーバーロードについての注意

最初に説明したように、オーバーロードするメソッドは、引数の型や数が異なっていなければなりません。

もし、引数の型と数が全く同じで、戻り値だけが異なる次の2つのメソッドをオーバーロードできてしまうとしたら、どうなるでしょうか?

  • int setChara(int t)
  • void setChara(int t)

すると、次のような呼び出しをしても、2つのうちどちらのメソッドか、判断できないでしょう。

setChara(37);

オーバーロードするとき、引数の型または個数が異なるようにしておきましょう。

最後に2つのint型の最大値を求めるメソッドと、3つのint型の最大値を求めるメソッドをオーバーロードしたプログラムを示します。

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

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

サンプルイメージ

練習問題(配列)解答例

配列を利用すると、同じ種類の多くのデータを扱うことができます。たくさんのデータをまとめ、簡単に管理することができます。今はすべてを理解しようとせずに前に進みましょう。 大切なのは、プログラミングを勉強 …

サンプルイメージ

配列のしくみ①

プログラムの中ではたくさんのデータを扱う場合があります。例えば、50体のキャラクターの攻撃力や体力や属性を扱うプログラムを考えてみましょう。 たくさんの変数が登場するので、コードが複雑で読みにくくなり …

サンプルイメージ

クラス型の変数

               クラスの基本で下記のようにオブジェクトを作成していました。 chara1のようにオブジェクトをさす変数を、Character型の変数と呼びました。さらに、newを使ってオ …

サンプルイメージ

メソッドの引数

メソッドでさらに柔軟な処理を行うことができます。メソッドを呼び出す際に、 呼び出し元からメソッド内に何か情報(値)を渡し、その値に応じた処理を行う ということができます。メソッドに渡す情報を引数といい …

サンプルイメージ

関係演算子と条件

条件のしくみ これまでのコードは1文ずつ順序よく処理が行われていました。しかし、「場合に応じた処理」を行うことができます。 ゲームのスコアが良かったら・・・→ボーナスステージに行く ゲームのスコアが悪 …