オーバーライドはカプセル化、継承と並ぶjavaの肝である。今日はオーバーライドとは何なのかについて見ていく。オーバーライドとは1つのメソッド名で複数の振る舞いを可能にするjavaの技術である。

これにより、簡明で変化に強いプログラムを作れるようになるだけでなく、構築や保守も容易になるというメリットがある。以下にオーバーライドを使用したプログラム例を示す。

※オーバーライドは同一クラスのメソッド間では行うことはできない。


class ColoredCircle extends Circle{

String color;

ColoredCircle(int r , String c){

super(r);

color = c;

}

display(){

super.display();

System.out.println("色は" + color + "です");

}

}


ここには書いていないが、Circleクラスには既にdisplayという名前のメソッドが存在している。だが、Circleクラスのdisplayでは半径x cmの円だということは表示できても何色の円かまでは表示できない。そこでColorCircleクラスでも同名のメソッドを宣言(オーバーライド)することで、Circleクラスのdisplayの性質を反映しながらさらに色も表示できるようにしている。

このことは、1つの名前で複数の振る舞いをしていることを証明している。


☆オーバーライドの条件☆

1、スーパークラスのメソッドと名称、引数の型/数/順序、戻り値が同じ。

2、スーパークラスのメソッドがfinalではなくかつprivateでない。

3、アクセス修飾子の範囲がスーパークラスより広いか同じ。

4、throws文で出す例外の種類がスーパークラスのメソッドと同じか少ない。