この記事では、Java 学習におけるインターフェイスと抽象クラスの違いを分析します。これは、初心者が Java プログラミングの概念を深く学び、正確に理解するために重要です。詳細は以下のとおりです。
Java 初心者はよく次のような質問をします: インターフェイスと抽象クラスの違いは何ですか?何を基準にインターフェイスと抽象クラスの使用を選択しますか?
インターフェイスと抽象クラスの概念は異なります。インターフェイスはアクションの抽象化であり、抽象クラスはソースの抽象化です。
抽象クラスは、このオブジェクトが何であるかを表します。インターフェイスは、このオブジェクトができることを表します。たとえば、男性と女性、これら 2 つのクラス (クラスであれば...)、その抽象クラスは人々です。彼らは皆人間であると説明してください。
人間も食べることができ、犬も食べることができます。「食べる」をインターフェイスとして定義し、これらのクラスに実装させます。
したがって、高級言語では、クラスは 1 つのクラス (抽象クラス) しか継承できませんが (人が同時に生物であると同時に無生物になることができないのと同じです)、複数のインターフェイス (インターフェイスを食べる) を実装できます。 、ウォーキングインターフェイス)。
最初の点。インターフェイスは抽象クラスのバリアントであり、インターフェイス内のすべてのメソッドは抽象です。抽象クラスは、メソッドを実装せずにメソッドの存在を宣言するクラスです。
2 番目の点。インターフェイスは継承できますが、抽象クラスは継承できません (注: 元の作成者はここで間違いを犯しました。抽象クラスは継承できます。すべてのサブクラスが抽象クラスのメソッドを実装している場合、そのサブクラスは抽象クラスではありません。そうでない場合は、そのうちの 1 つが抽象クラスです。実装されていない場合、サブクラスも抽象クラスになります)。
3点目。インターフェイス定義メソッドは実装できませんが、抽象クラスは一部のメソッドを実装できます。
4番目のポイント。インターフェイスの基本データ型は静的ですが、抽象イメージは静的ではありません。
物事の本質に焦点を当てる場合は抽象クラスを使用し、操作に焦点を当てる場合はインターフェイスを使用します。
抽象クラスの機能はインターフェイスの機能をはるかに上回りますが、抽象クラスを定義するコストは高くなります。高級言語では (そして実際の設計の観点からは)、各クラスは 1 つのクラスしか継承できないためです。このクラスでは、そのすべてのサブクラスのすべての共通機能を継承するか、書き出す必要があります。インターフェイスの機能は大幅に低下しますが、これはアクションの説明にすぎません。また、1 つのクラスに複数のインターフェイスを同時に実装できます。設計段階での難易度は軽減されます。