おはようございます!!
18日目の今日は、以前勉強した際にイマイチ理解できなかった、オーバーロードについて、せかチャン様の動画で学ぶところから始めました!!
ではいきます!!
【オーバーロードとは】
★設計図クラスに同じ名前で引数の型や、数が違うメソッドを複数定義すること。
★呼び出すメソッドは、名前と引数の組み合わせで決めている。
(組み合わせが合わなかったらエラー)
(プログラムを書く側のメリット)
★プログラムが分かりやすくなる。
→ 同じメソッド名を使うことで、「同じような処理をするメソッドなんだ」と分かりやすい。
★メソッドをたくさん作るのは、その都度名前を付けるのが大変。
(実行側のメリット)
★メソッド名が変わらないので使いやすい。
↓
何回もSystem.out.println~を使わなくて済む。
さらに理解を深めるために、実際に先生に従ってコーディング!!
(class Student)
public class Student{
String name;
int engScore;
int mathScore;
}
Studentクラスでは、3つの変数を宣言!!
public void setData(String n){
name = n;
}
メソッドsetDataは、String型のnをメインメソッドから取得して代入します。
メインメソッドから値を取得したnの内容を、nameに代入します。
public void setData(String n,int e, int m){
name = n;
engScore = e;
mathScore = m;
}
メソッドsetDataは、String型のnとint型のeとint型のmをメインメソッドから取得して代入します。
メインメソッドから値を取得したn、e、mの値を、name、engScore、mathScoreに代入します。
public void setScore(int e,int m){
engScore = e;
mathScore = m;
}
メソッドsetScoreは、int型のeとint型のmをメインメソッドから取得して代入します。
メインメソッドから値を取得したe、mの値を、engScore、mathScoreに代入します。
public void display(){
System.out.println(name + “さん”);
System.out.println(“英語” + engScore + “点・数学” + mathScore + “点”);
}
メソッドdisplayは、System~の内容を表示させます。
setDataというメソッド名がオーバーロードということですね!!
(メインクラス)
Student stu1 = new Student();
Student stu2 = new Student();
Studentクラスにアクセスできるstu1とstu2という箱を作るために、新たにメモリ上にクラスStudentのメソッド分のメモリを確保させます。
(stu1とstu2の宣言)
stu1.setData(“ジルクニフ”);
stu1.setScore(90,80);
stu1.display();
stu1に所属するsetDataの引数は、「ジルクニフ」です。
stu1に所属するsetScoreの引数は、「90,80」です。
stu1に所属するdisplay()は、指定した内容を表示させます。
stu2.setData(“ンフィーレア”,75,100);
stu2.display();
stu2に所属するsetDataの引数は、「”ンフィーレア”,75,100」です。
stu2に所属するdisplay()は、指定した内容を表示させます。
めちゃめちゃ分かった!!!
これがオーバーロードか、、、
あぁー、スッキリした!!
今まで、引数で最初に宣言した変数名に合わせて(String name)
として、
this.name = name;
といった感じにしてたけど、やってることは同じなのかな。。
(一応、確かめたら処理結果が同じだった)
どっちが使いやすいかの問題かな??
(変数名が同じか、違うのか)
とにかく、ありがとうございます!!
せかチャン様!!
というわけで、今日はまだまだやっていきます!!
今日も楽しんでいこう!!