クラスの継承

クラスを新たに定義する場合、クラスの継承を利用すると記述が簡略化できて便利です。
 新しいクラスを定義する時に、そのすべてを最初から記述し直すとすると 大きな労力が必要になります。 Java言語も含む多くのオブジェクト指向の言語では、「クラスの継承」という 考え方を利用することで無駄を省くことができます。
 新しいクラスを定義する時に、既に存在する別のクラスを基にして、 その性質(変数とメソッド)をそっくり受け継いでしまうのが、継承の意味です。 新しいクラスに記述するのは、基のクラスの変更すべき部分や新たに追加すべき 部分だけで済んでしまいます。 基になるクラスのことを「スーパークラス(親のクラス)」、 新しく作成されるクラスのことを「サブクラス(子のクラス)」と 呼びます。 一般に「親」よりも「子」の方が「大きな」オブジェクトになる点に 注意してください。 親から子へ、さらに孫へと継承が何段階も繰り返されることも珍しくありません。 継承の繰り返しによって、共通した性質を持つクラスの「系統樹」が作られます。

 次に具体的なプログラム内の記述法を見てみましょう。 クラス定義の始めのキーワード class とクラス名に続く部分で、 キーワード extendsを用いることで、クラスの継承を行うことを示します。 extends の後に、スーパークラスとして指定したいクラスの名前を指定します。 たとえば、Applet という既存のクラスを基にして、新しく NewApplet という クラスを定義するには、次のようにします。


public class NewApplet extends Applet {

 /* クラス定義の内容 */

}

参照するスーパークラスは、「クラスパス(Class Path)」によって指定される ディレクトリに置かれたクラスライブラリの中に存在する必要があります。 クラスパスは環境変数によって設定が可能です。 デフォルトのクラスパスは、「カレントディレクトリ及び JDKの標準クラスライブラリ が置かれたディレクトリ」です。 またクラスライブラリの内部がパッケージに階層化されている場合には、 パッケージ名を直接指定するか、または パッケージの情報を import文によって与える必要があります。

import java.applet.Applet;
public class NewApplet extends Applet {

または

public class NewApplet extends java.applet.Applet {

 実は Java言語では、すべてのクラス定義において継承が行われています。 extends によるスーパークラスの指定を省略した場合、 Object という名前のクラスがスーパークラスになります。 Object は Java言語のすべてのクラスの共通したスーパークラスです。