1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お品書き
  • オーバーライドって?
  • オーバーライドとオーバーロードの違い
  • オーバーライドSample

オーバーライドって?

サブクラスでスーパークラスのメソッドを再定義することを
オーバーライドという。
オーバーライドとは「上書き」という意味の英単語

▲条件

戻り値の型、メソッド名、引数の型と数が全て同じ

これが全てそろってはじめて上書きが出来る。

class Person{
   void display(){
   .
   .
   }
}

calss Student extendes Person{
   void display(){
   .
   .
   }
}

例2
Student stu = new Student();
stu.display();

stuを作るとオブジェクトの領域にSuperClassの情報とSubClassの情報の両方含まれる。
その中でSubClassのdisplayメソッドを呼び出すため、上書きしたあとのdisplayメソッドの処理が呼び出されて実行される動きになる。

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

オーバーライドはメソッドの上書き
スーパークラスとサブクラスの間の関係

オーバーロードは1つのクラスの中で同じ名前のメソッドを複数定義できるのがオーバーロード

オーバーライドSample

java
public class Person2{
  private String name; //メンバー変数として名前を持つ

  public void setName(String n){ //設定するためのメソッド
    name = n;
  }
  public String getName(){ //名前を取得するためのメソッド
    return name;
  }
  public void display(){ //表示するためのメソッド
    System.out.println("名前:" + name);
  }
}
java
public class Student2 extends Person2{
  private int stuNo;

  public void setStuNo(int s){
    stuNo = s;
  }
  public void display(){  //Person2クラスで持っていたdisplayメソッドを上書きしている
    System.out.println("名前:" + getName()); //nameがprivate指定の為getNameメソッドを使う。
    System.out.println("学籍番号:" + stuNo);
  }
}

カプセル化をちょいと復習↑
継承した際にnameという情報を持つことはできるが、アクセスするときは別クラスになるため、getNameメソッドを経由して名前を取得するということを行う。

java
public class StuSample2{
  public static void main(String[] args){
    Student2 stu = new Student2();
    stu.setName("大輔");    
    stu.setStuNo(1);
    stu.display();
  }
}

実行用クラスでdisplayメソッドを呼び出したときにSuperClassのdisplayかSubClassのdisplayメソッドのどちらが呼ばれるか。

cmd
C:\Java\1>java StuSample2
名前:大輔
学籍番号:1

上書きしたSubClassの名前と学籍番号が両方表示されるdisplayメソッドが呼び出された。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?