ホームページ  >  記事  >  Java  >  Java抽象クラスとインターフェースの違いは何ですか?

Java抽象クラスとインターフェースの違いは何ですか?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼オリジナル
2019-11-14 17:47:204285ブラウズ

Java抽象クラスとインターフェースの違いは何ですか?

1. 抽象クラス

Java では、キーワード abstract によって変更されたクラスを抽象クラスと呼びます。抽象によって変更されたメソッドは抽象メソッドと呼ばれます。抽象メソッドにはメソッド宣言のみがあり、メソッド本体はありません。

抽象クラスには次の特性があります:

1. 抽象クラスはインスタンス化できませんが、継承のみが可能です。

2. 抽象メソッドを含むクラスは抽象クラスでなければなりませんが、抽象クラスには必ずしも抽象メソッドが含まれる必要はありません (抽象クラスには通常のメソッドを含めることができます)。

3. 抽象メソッドの権限修飾子は public または protected のみにすることができ、デフォルトでは public です。

4. クラスが抽象クラスから継承する場合、サブクラスは抽象クラスの抽象メソッドを実装する必要があります。サブクラスが親クラスの抽象メソッドを実装していない場合、サブクラスは抽象クラス。

5. 抽象クラスには属性、メソッド、コンストラクターを含めることができますが、コンストラクターを使用してオブジェクトをインスタンス化することはできず、サブクラスによってのみ呼び出すことができます。

2. インターフェイス

インターフェイスは特別なクラスとみなされ、interface キーワードでのみ変更できます。他のユーザーが呼び出すためのインターフェイスが提供されます。 Java のインターフェイスには次の特性があります:

1. インターフェイスには変数とメソッドを含めることができます。変数は暗黙的に public static Final として指定され、メソッドは暗黙的に public abstract (JDK 1.8 より前) として指定されます。 ##2. このインターフェースは多重継承をサポートしています。つまり、1 つのインターフェースが複数のインターフェースを継承 (拡張) できるため、Java のクラスが複数のインターフェースから継承できないという問題が間接的に解決されます。同時に実装される 複数のインターフェイス。クラスがインターフェイスを実装する場合は、そのインターフェイスに抽象メソッドを実装する必要があります。それ以外の場合は、クラスを抽象クラスとして定義する必要があります。

4. 2 つの新しい機能が追加されました。 JDK 1.8 のインターフェイスへ:

(1) デフォルト メソッド: JDK 1.8 では、非抽象メソッド実装をインターフェイスに追加できますが、デフォルト キーワードを使用して変更する必要があります。デフォルトを定義するメソッドは実装では実装できません。ただし、これを呼び出すことができるのは、サブクラスを実装するオブジェクトによってのみです。サブクラスが複数のインターフェイスを実装しており、これらのインターフェイスに同じデフォルト メソッドが含まれている場合、サブクラスはデフォルト メソッドをオーバーライドする必要があります。

(2) 静的メソッド: JDK 1.8 では、静的キーワードを使用してメソッドを変更し、インターフェイス静的メソッドと呼ばれる実装を提供できます。インターフェイスの静的メソッドは、インターフェイス (インターフェイス名.静的メソッド名) を通じてのみ呼び出すことができます。

5. JDK 1.9 では、インターフェイスが再度拡張され、プライベート メソッドとプライベート スタティック メソッドが実装されました。 JDK 1.8ではインターフェース内のメソッドを実装できるため、実装したメソッドを外部に公開したくない場合は、メソッドをプライベートとして定義できます。

3. インターフェイスと抽象クラスの違い

1. 抽象クラスには通常のメソッドを含めることができますが、インターフェイスにはパブリック抽象メソッドのみを含めることができます (JDK 1.8 より前)。 2. 抽象クラスのメンバー変数にはアクセス制限はありませんが、インターフェイス内の変数は public static Final によってのみ変更できます;

3. 1 つのインターフェイスは複数のインターフェイスを継承できますが、クラスは親クラスを 1 つだけ持つことができ、クラスは複数のインターフェイスを実装できます;

4. 抽象クラスは、あるタイプの抽象化であり、インターフェイスは動作の抽象化です。抽象クラスを継承するクラスは「ある」関係を表し、インターフェイスを実装するクラスは「ある」関係を表します。

php 中国語 Web サイト、無料の

Java 入門チュートリアル

が多数あり、オンラインで学習することを歓迎します。

以上がJava抽象クラスとインターフェースの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。