オーバーライド
オーバーライドの最新ニュースをまとめて検索!
オブジェクト指向プログラミングにおいてオーバーライド (override)とは、スーパークラスで定義されたメソッドをサブクラスで定義しなおし、動作を上書きすることである。
あるクラスAにメソッドMethodがあり、あるクラスSubAがクラスAを継承したとする。そのとき、クラスSubAはクラスAにあるメソッドMethodをオーバーライドすることにより、再定義することができる。これはオブジェクト指向プログラミングにおけるポリモーフィズムを実現する際によく使われる。
メソッドのオーバーロード(多重定義、overload)と混同されることがあるが、まったく異なる概念である。
[編集] Javaによるオーバーライドの例
public class SuperClass {
public SuperClass(){
System.out.println("スーパークラスのコンストラクタを実行");
}
public void print(){
System.out.println("スーパークラスのインスタンスメソッドを実行");
}
public static void staticPrint(){
System.out.println("スーパークラスのクラスメソッドを実行");
}
}
public class SubClass extends SuperClass {
public SubClass(){
System.out.println("サブクラスのコンストラクタを実行");
}
//このメソッドはスーパークラスのprint()メソッドをオーバーライドしている。
//(アノテーション @OverrideはJava SE 5から追加されたもので、つけてもつけなくても良いが、
//付けておくとメソッド名を書き間違えたときに即座に間違いに気づくことができるという利点がある。
@Override public void print(){
System.out.println("サブクラスのインスタンスメソッドを実行");
}
//スーパークラスのクラスメソッドをオーバーライドすることはできない。
public static void staticPrint(){
System.out.println("サブクラスのクラスメソッドを実行");
}
}
このクラスを実行するプログラムを
class Main{
public static void main(String[] args) {
//クラスメソッドを実行
SuperClass.staticPrint();
SubClass.staticPrint();
//インスタンスを生成
SuperClass superTypeSubclassInstance = new SubClass();
superTypeSubclassInstance.print();
SubClass subClass = new SubClass();
subClass.print();
SuperClass superClass = new SuperClass();
superClass.print();
}
}
として実行すると
スーパークラスのクラスメソッドを実行 サブクラスのクラスメソッドを実行 スーパークラスのコンストラクタを実行 サブクラスのコンストラクタを実行 サブクラスのインスタンスメソッドを実行 スーパークラスのコンストラクタを実行 サブクラスのコンストラクタを実行 サブクラスのインスタンスメソッドを実行 スーパークラスのコンストラクタを実行 スーパークラスのインスタンスメソッドを実行
という結果が得られる。
フリー百科事典『ウィキペディア(Wikipedia)』 Text is available under GNU Free Documentation License.
最終更新 2009年9月28日 (月) 04:01 (日時は個人設定で未設定ならばUTC)。
【オーバーライド】変更履歴

