Java の基本 - 抽象クラスとインターフェイス

巴扎黑
リリース: 2017-06-26 11:31:07
オリジナル
1344 人が閲覧しました

抽象クラスとインターフェイスが一緒に扱われる理由は、それらが区別するのが難しく、互いに独立しているためです。 Java プログラミングの 3 つの主要な特徴 (カプセル化、継承、ポリモーフィズム) を学んだ後、私の最大の収穫は、Java 言語などのオブジェクト指向プログラミングの利点を徐々に理解できたことです。Java 言語は、独自の独立性を維持し、常に進化し続けることができます。現像。カプセル化と継承が Java ポリモーフィズムを実現するための基礎であるならば、抽象クラスとインターフェイスはポリモーフィズムを非常に適切にサポートすると個人的には思います。

1. 抽象クラス

正式に言えば、abstract で変更されたクラスは抽象クラスです。抽象クラスは不完全であり、基本クラスとしてのみ使用でき、インスタンス化できません (新規にすることはできません)。

平たく言えば、抽象クラスはそれ自体では何も行わず、その仕様を実装するために他のクラスを必要とします。これは抽象メソッドのセットを定義し、この抽象メソッドのセットの特定の式は派生クラスによって実装できます。抽象クラスの実装には継承を使用する必要があり、そうでない場合は作成しても意味がありません。

抽象クラスを使用する場合は、次の点に注意する必要があります。

1. 抽象クラスは単なる参照であり、インスタンス化の作業はそのサブクラスに引き継がれる必要があります。サブクラスによって実装される

3. クラス内に、(abstract によって変更された) メソッドが定義されている限り、クラスは抽象クラスとして定義される必要があります (クラス名も変更する必要があります)。 by abstract);

4. 抽象クラスには具象メソッドが含まれる場合もあれば、含まれない場合もあります。 Abstract を private、static、fanal と同じにすることはできません。また、同じメソッドをネイティブと並行して変更することもできません。

コード例:

1 public abstract class ChouX {2     public abstract void method1();3 4     public void method2() {5 6     }7 }
ログイン後にコピー

//抽象类public abstract class Animal {public abstract void shout();
}
ログイン後にコピー

1 //猫子类2 public class Cat extends Animal {3     public void shout() {4         System.out.println("喵~~");5     }6 }
ログイン後にコピー

//Dog子类public class Dog extends Animal {public void shout() {
        System.out.println("汪汪汪。。。");
    }
}
ログイン後にコピー
出力:

2. オブジェクト指向のインターフェース

プログラミング、抽象化がその大きな特徴です。 Java では、OOP 抽象化は、抽象クラスとインターフェイスという 2 つの形式で反映できます。

ソフトウェアエンジニアリングにおけるインターフェースとは、一般に他の人によって呼び出されるメソッドまたは関数を指します。

形式:

//测试类public class Test {public static void main(String[] args) {
        Animal a1 = new Dog();
        Animal a2 = new Cat();
        a1.shout();
        a2.shout();
    }
}
ログイン後にコピー

[public] interface InterfaceName{

}
ログイン後にコピー

クラスを特定のインターフェイスのセットに従わせるには、implements キーワードを使用する必要があります。

形式:

class ClassNameimplements Interface1, Interface2, Interface3....{} (クラスが複数の特定のインターフェースに従うことを許可します)
3. 抽象クラスとインターフェースの違い

1.違い

第一に、抽象クラスはメンバー メソッドの実装の詳細を提供できますが、インターフェイスにはパブリック抽象メソッドのみが存在できます。

第二に、抽象クラスのメンバー変数はさまざまな型にすることができますが、インターフェイスのメンバーは Public static Final のみにすることができます。 type;さらに、インターフェイスには静的コード ブロックと静的メソッドを含めることはできませんが、抽象クラスには含めることができます。

最後に、クラスは 1 つの抽象クラスのみを継承できますが、複数のインターフェイスを継承できます。

2. 設計レベルでの違い

まず、抽象クラスは物の抽象化、つまりクラスの抽象化ですが、インターフェイスは動作の抽象化です。

さらに、抽象クラスは多くのサブクラスの親クラスとして機能し、テンプレート設計になっています。インターフェイスは動作仕様です。

最後に、抽象クラスでメソッドを変更したい場合は、それを抽象クラスに直接実装でき、サブクラスを変更する必要はありません。これがインターフェイスで発生した場合は、このインターフェイスにリンクされているすべてのクラスを変更する必要があります。

要約: ここまで述べてきましたが、原理を理解すれば、実際には非常に簡単です。たとえば、抽象クラスの場合は、抽象クラスを親クラスとして定義します。クラスを完全に説明していないか、数年後にクラスがアップグレードされた可能性があります。いつも予約が入っています。現時点では、親クラス全体を転覆するために戦争をする必要はありません。サブクラスに特定の変更を加えるだけで済みます。何を変更するかしないか、いつ変更するかを決めるのはあなた次第です。これにより、柔軟性と再利用性が向上するのではないでしょうか?抽象クラスとインターフェイスの違いは、魚やボートが水の中を泳げるのと同じで、同じクラスではありません。魚とボートを同じクラスに入れることは考えませんが、両方ともこの「泳ぐ」アクションをインターフェイスに設定して、魚がそれを使用できるようにし、ボートもそれを使用できるようにします。将来、「泳ぐ」ことができるものを説明したいときに使用できます。

インターネット上に非常に役立つ事例があります:

抽象クラスとインターフェースの違いを理解するのに役立つように、注意深く考えることができます。

りー

りーりー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート