ホームページ >Java >&#&チュートリアル >Javaの抽象クラス
次の記事では、Java の抽象クラスの概要を説明します。抽象クラスは、Java の他の通常のクラスと似ています。抽象クラスと通常のクラスの大きな違いは、抽象クラスを作成することです。「ABSTRACT」キーワードを使用する必要があります。クラス実装の分離です。これらは、サブクラスの非常に一般的な機能を定義するために使用されていました。このようなタイプのクラスは、抽象クラスと呼ばれます。最も重要なことは、抽象クラスのオブジェクトを作成できないということです。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
抽象クラスには、抽象メソッドだけでなく非抽象メソッドも含めることができます。ただし、サブクラスのみが提供できる抽象メソッドの本体を含めることはできません。サブクラスが抽象メソッドを実装していない場合は、明示的に ABSTRACT にする必要があります。つまり、クラスに抽象メソッドが含まれる場合、クラス自体を ABSTRACT として定義する必要があります。抽象クラスを使用して複数の Java クラスをグループ化し、コードを最適化し、コードを読みやすくし、冗長性を減らすことができます。また、将来のクラス用のテンプレートも提供します。
抽象クラスの構文は次のとおりです:
以下に例を示します:
Human.java
package com.cont.article; public abstract class Human { public abstract void whatTheylike(); public void doTheysleep() { System.out.println("Yes every human require sleep."); } }
Human1.java
package com.cont.article; public class Human1 extends Human { @Override public void whatTheylike() { System.out.println("we like to have icecream."); } }
Human2.java
package com.cont.article; public class Human2 extends Human { @Override public void whatTheylike() { System.out.println("we like to have coffee."); } }
TestHuman.java
package com.cont.article; public class TestHuman { public static void main(String[] args) { Human human1 = new Human1(); human1.whatTheylike(); Human human2 = new Human2(); human2.whatTheylike(); human1.doTheysleep(); human2.doTheysleep(); } }
出力:
上記の例では、HUMAN は人間の共通のニーズ、好き嫌いを定義する抽象クラスです。人間にはさまざまなタイプがあり、好き嫌いも異なります。したがって、すべての人間が自分の好みの具体的な実装を提供できます。それは彼らだけに特有のものです。
抽象クラスの主な利点は、要件に応じたメソッドの特定の実装があり、冗長性が削減され、コードの可読性が向上し、メソッドの実装が隠蔽され、部分的な抽象化が提供されることです。
いつ抽象クラスを使用するかを理解するための例がもう 1 つあります。
Animal クラスが 1 つあるとします。地球上にはさまざまな動物がいますが、それらはすべて何らかの意味または主要な意味で互いに異なります。ただし、すべての共通機能がすべて含まれます。
この Animal クラスは、すべての Animal に特定のメソッドを持つことはできません。したがって、抽象クラスの概念により、冗長なコードなしでこの機能を実装できます。
すべての動物には、異なる種類の鳴き声や習慣などがあります。たとえば、犬、猫、象、おやつなどはそれぞれ異なる鳴き声を持っています。そのため、親クラスにジェネリック メソッドを用意し、それを介して他のすべてのサブクラスまたは子クラスが特定の実装を提供できるようにします。
親クラス、つまり Animal には、Sound() と呼ばれる 1 つの汎用抽象メソッドがあります。したがって、すべての子クラスはこのメソッドをオーバーライドし、その特定の実装を提供する必要があります。
以下は抽象クラスとインターフェースの違いです:
抽象クラスは、部分的な抽象化を提供するために使用されます。 NEW キーワードを使用して抽象クラスをインスタンス化することはできません。 Abstract メソッドには本体がなく、常にセミコロン (;) で終わります。抽象クラスには、抽象メソッドと非抽象メソッドが含まれます。抽象スーパークラスのサブクラスは、すべての抽象メソッドを実装する必要があります。提供しない場合は、それ自体を抽象クラスとして宣言する必要があります。スーパークラスが具象であっても、サブクラスは抽象にすることができます。非抽象クラスには抽象メソッドを含めることはできません。また、抽象メソッドは非静的です。したがって、抽象クラスには抽象メソッドと具象メソッドもあり、100% の抽象化を提供することはできません。これは、複雑なロジックをエンドユーザーから隠し、サービスのみを表示するプロセスです。
一方、スーパークラスが具象であってもサブクラスは抽象になることができ、データ型としても使用できます。抽象クラスには静的フィールドと静的メソッドが含まれる場合があります。これらの静的メンバーをクラス参照とともに使用できます。
以上がJavaの抽象クラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。