インターフェイスの実装では、インターフェイス構文を使用してインターフェイスをクラス定義から分離し、サブジェクトを形成します。インターフェースはクラスのインターフェース仕様を提供します。
継承では、プログラムの再利用性を高めるために継承の仕組みを導入します。当時の継承はクラスに基づいていました。インターフェイス インターフェイスを継承して、元のインターフェイスを拡張することもできます。
インターフェースの継承
インターフェイスの継承 (継承) はクラスの継承と非常によく似ており、継承されたインターフェイスに基づいて新しいインターフェイス メソッドのプロトタイプを追加します。たとえば、元のインターフェイスとして Cup を使用します。
次のようにコードをコピーします。
インターフェースカップ {
void addWater(int w);
void DrinkWater(int w);
}
Cup の継承に基づいて、スケール付きカップ用の新しいインターフェイス MetricCup を定義します。
インターフェースは次のとおりです。
次のようにコードをコピーします。
インターフェイス MetricCup はカップを拡張します
{
int WaterContent();
}
整数 (水の量) を返す新しいメソッド プロトタイプ WaterContent() を追加しました。
インターフェースの多重継承
Java クラスの継承では、派生クラスは基本クラスを 1 つだけ持つことができます。つまり、クラスは同時に複数のクラスを継承できません。 Java では、インターフェイスは同時に複数のインターフェイスを継承できます。これを多重継承と呼びます。
たとえば、次のようなプレーヤー インターフェイスがあります。
次のようにコードをコピーします。
インターフェイスプレーヤー
{
void play();
}
新しい MusicCup インターフェイスを追加します。 Cup インターフェイスと Player インターフェイスの両方があり、display() メソッドのプロトタイプが追加されています。
次のようにコードをコピーします。
インターフェイス MusicCup はカップ、プレーヤーを拡張します
{
ボイドディスプレイ();
}
(インターフェースの使用方法については、「インターフェースの実装」を参照)
抽象クラス
人生において、私たちは非常に抽象的な概念をいくつか持っています。これらの抽象的な概念は、多くの場合、次のような多くのクラスのコレクションです。
1. 穀物(トウモロコシ、小麦、米など)
2. グラフィックス (三角形、円、四角形を使用できます)
別の例として、前に次の例を挙げました。
1. 人間(男性でも女性でも可)
このような関係を整理するときは、次のような継承を使用できます。
私たちの常識によれば、次のようになります。
1. 「Food クラスのオブジェクト」という用語は抽象的です。このようなオブジェクトは、トウモロコシ、ライス、小麦のサブクラスのいずれかに属している必要があります。
2. Food クラスには Eat() メソッドがあります (食べ物を食べることができます)。ただし、そのようなアクションは抽象的です。具体的な食べ方は人それぞれです。たとえば、トウモロコシは皮をむいて食べる必要があり、小麦は粉砕して小麦粉にする必要があります。すべてのクラスで Food クラスの Eat() メソッドをオーバーライドする必要があります。
抽象的と具体的
Java は、クラスとそのメソッドの抽象化を示すために抽象クラスの構文を提供します。例えば:
次のようにコードをコピーします。
抽象クラス 食品 {
パブリック抽象 void Eat();
public void happyFood();
{
System.out.println("おいしい! 食べてください!");
}
}
クラス内のメソッドは、上記の Eat() のように抽象として宣言できます。現時点ではメソッドを具体的に定義する必要はなく、メソッドのプロトタイプを提供するだけで済みます。これはインターフェースと似ています。たとえば Corn クラスでこのクラスを継承する場合、eat() メソッドの特定の定義を提供する必要があります。
クラス happyFood() の別のメソッドは、
クラス内に抽象メソッドが出現する場合、abstract キーワードをこのクラスの宣言に追加する必要があります。追加しない場合、Java はエラーを報告します。抽象クラスを使用してオブジェクトを作成することはできません。
抽象クラスの継承
抽象クラスもクラスと同じように継承できます。完全なメソッド定義を使用して、抽象クラス内の抽象メソッドをカバーする必要があります。そうでない場合、派生クラスは依然として抽象クラスのままです。
抽象クラスの定義にはデータ メンバーを含めることができます。データメンバの継承は通常のクラスと同様です。
要約する
インターフェースの継承、多重継承
抽象メソッド、抽象クラス