オーバーライドはカプセル化、継承と並ぶ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文で出す例外の種類がスーパークラスのメソッドと同じか少ない。