20日目①(2025.02.19) オーバーライド



おはようございます!!

今日の一発目は、「オーバーライド」です!!

というわけで、菅原先生、よろしくお願いします!!


【オーバーライドとは】

継承において、サブクラスがスーパークラスのメソッドを再定義(上書き)すること。



【オーバーライドの条件】

戻り値の型、メソッド名、引数の型と数が全て同じであること。


【オーバーロードとオーバーライドの違い】

オーバーロード:1つのクラスの中で、同じ名前のメソッドを複数定義する
オーバーライド:サブクラスがスーパークラスのメソッドを上書き

名前が似ているので、ごっちゃになりそうですが、全然違うものですね、、、


そんなこんなで、実際にコードを書いて解説してくださいました。




(スーパークラス)

public class Person{
private String name;

public void setName(String n){
name = n;
}

public String getName(){
return name;
}

public void display(){
System.out.println(“名前” + name);
}
}



(サブクラス)

public class Student extends Person{
private int stuNo;

public void setStuNo(int n){
stuNo = n;
}

public void display(){
System.out.println(“名前” + getName());
System.out.println(“学籍番号: ” + stuNo);
}
}


(実行用クラス)

Student stu1 = new Student();

stu1.setName(“パルテノン”);
stu1.setStuNo(1);
stu1.display();
}
}


Personクラスで定義した
display()
が、オーバーライドされて、Studentクラスで再定義されているという感じですね!!

また、注意点として菅原先生がおっしゃっていたのは、
「name」を取り入れるために、「getName」というメソッドを定義している点でした。
nameは、Personクラス内でprivate設定されているので、Studentクラスからはアクセスできない、、、

という訳で、getNameメソッドを作って、nameを取り入れたうえで、StudentクラスからgetNameを呼び出すという流れでした!!


うむうむ、、、
めっちゃ理解できた!!!

ありがとうございます、菅原先生!!


という訳で、今日も楽しんでいこう!!!


ではでは!!

コメントを残す