クラスを作成する準備をしているときに、特定のクラスに必要なメンバー変数とメソッドがあることがわかりました。このクラスでメンバー変数とメソッドを再利用したい場合は、クラス内でメンバー変数と定義を宣言する必要はありません。作成するクラスメソッドは、このメンバー変数とメソッドを持つことと同じなので、作成するクラスをこのクラスのサブクラスとして定義できます。
継承は、既存のクラスから新しいクラスを作成するためのメカニズムです。継承を使用すると、まず共通の属性を持つ一般クラスを定義し、次にその一般クラスに基づいた特別な属性を持つサブクラスを定義できます。と動作を追加し、必要に応じて独自の新しいプロパティと動作を追加します。継承によって得られたクラスをサブクラス、継承されたクラスを親クラス(スーパークラス)といいます。
知らせ:
Java は多重継承をサポートしていません。つまり、サブクラスは親クラスを 1 つだけ持つことができます。サブクラスと親クラスの間の関係を「is-a」関係と呼ぶことに慣れています。
クラスの宣言では、キーワード extends を使用してクラスのサブクラスを定義します。一般的な形式は次のとおりです。
クラスのサブクラス名は親クラス名を拡張します {…}
例えば:
クラス学生拡張人々{…}
Student クラスを People クラスのサブクラスとして定義し、People クラスが Student クラスの親クラス (スーパークラス) となります。
クラスツリー構造:
C が B のサブタイプであり、B が A のサブタイプである場合、通常は C を A の子孫と呼びます。 Java クラスは継承関係に従ってツリー構造を形成します (クラスをツリー上のノードとして考えてください)。このツリー構造では、ルート ノードは Object クラス (Object は java.lang パッケージ内のクラスです)、つまり Object です。すべてのクラスの祖先クラスです。すべてのクラスは Object クラスの子孫です。各クラス (Object クラスを除く) は 1 つだけの親クラスを持ちます。クラスは複数のサブクラスを持つことも、0 個のサブクラスを持つこともできます。
知らせ:
extends キーワードがクラス (Object クラスを除く) の宣言で使用されていない場合、そのクラスはシステムによってデフォルトで Object のサブクラスに設定されます。たとえば、クラス宣言「class A」は「class A extends Object」と同等です。