スーパークラスのメソッドを呼び出す
親のクラスで定義されたメソッドを同じ名前のメソッドで上書きする場合、
この置き換えはメソッド単位で行われます。
では、親のクラスのメソッドの機能を受け継ぎ、
それに機能を追加したい場合はどうすればいいのでしょうか?
もう一度ゼロから書き直さなければならないのでしょうか?
もちろん、そうしても誤りではありません。
しかしそれではクラス継承の本来の意義からはずれてしまうような気もします。
このようなケースのために、Java言語ではキーワード super が用意されています。
this がそのオブジェクト自身を示したように、
super は親のクラスで定義されたデータにアクセスすることを意味します。
たとえば
super.paint()のようにすれば、
スーパークラスで定義されていた
paint()
メソッドの処理を呼び出すことができます。
public void init() {
super.init(); // スーパークラスの init() を呼ぶ
String source = getParameter("source"); // イメージのソース名
if( source != null )
image = getImage( getDocumentBase(), source ); // 指定あり
else
image = getImage( getCodeBase(), "default.gif" ); // 指定なし
}
スーパークラスのコンストラクタは super() で呼び出すことができます。
class Viewer extends Frame {
Viewer( String title ){
super( title ); // スーパークラス Frame のコンストラクタ
:
:
}
}