18日目①(2025.02.17) オーバーロードについて



おはようございます!!

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;
といった感じにしてたけど、やってることは同じなのかな。。
(一応、確かめたら処理結果が同じだった)
どっちが使いやすいかの問題かな??
(変数名が同じか、違うのか)


とにかく、ありがとうございます!!
せかチャン様!!

というわけで、今日はまだまだやっていきます!!



今日も楽しんでいこう!!


コメントを残す