Java Programming 2015 – 7

継承

Javaでの継承

Javaでは、あるクラスを継承して、別のクラスを作成することができます。
この時、元のクラス(親のクラス)を スーパークラス(super class、継承したクラス(子のクラス、派生クラス)を サブクラス(subclass)といいます。
クラスの継承は次の形になります。

派生クラスのコンストラクタ

継承してクラスを作成した場合は、自動的にスーパークラスのコンストラクタが先に呼び出されます。

ただし、この場合はスーパークラスのコンストラクタを呼び出しに行きますので、Animalクラスにデフォルトコンストラクタがない場合は、エラーになります。

そこで、明示的にスーパークラスのコンストラクタを呼び出すこともできます。

継承されるもの

派生クラスでは、privateでないフィールドとメソッドは継承されますので、自クラスにあるのと同じように使うことができます。

クラス内でスーパークラスの変数を使う。

インスタンスでスーパークラスのメソッドを使う。

スーパークラスの変数へのインスタンスの代入

スーパークラスの変数を用意して、そこにサブクラスのインスタンスを代入することができます。

スーパークラスのメソッド呼び出し

上の続きで、次のような文はエラーになります。それは、Animalクラスにfeed()メソッドがないからです。

インスタンス自体はCatクラスのオブジェクトですので、Catクラスにキャストすれば使うことができます。

メソッドのオーバーライド

Javaでは、スーパークラスにある同じシグネチャのメソッドをサブクラスに書くと、自動的にオーバーライドします。

Animalクラスに、次のようにfeed()メソッドを用意すると、先ほどできなかったfeed()が呼び出しができるようになります。
この場合に、オーバーライドされて、Catクラスのfeed()メソッドが呼び出されることに注意してください。

参照型変数をメソッドの引数に使う

まず、Catクラスを参考にして、Mouseクラスを作成します。
さらに、Mouseクラスに引数付きのfeed()メソッドを追加します。

次のように呼び出します。

この場合のjerryは、Animalクラスにできますが、tomをMouseクラスにはできません。
その方法は、次の回に紹介します。

Digiprove sealCopyright secured by Digiprove © 2015

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください