おはようございます!!
今日の一発目は、「オーバーライド」です!!
というわけで、菅原先生、よろしくお願いします!!
【オーバーライドとは】
継承において、サブクラスがスーパークラスのメソッドを再定義(上書き)すること。
【オーバーライドの条件】
戻り値の型、メソッド名、引数の型と数が全て同じであること。
【オーバーロードとオーバーライドの違い】
オーバーロード: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を呼び出すという流れでした!!
うむうむ、、、
めっちゃ理解できた!!!
ありがとうございます、菅原先生!!
という訳で、今日も楽しんでいこう!!!
ではでは!!