抽象クラスvsインタフェース


インタフェースは何ですか
インタフェースは単純にハウジングと言えるが,設計図や明細と考えられる.
すべてのメソッドは抽象メソッドであり、一般変数は使用できません.(抽象クラスと比較)
インタフェースを実装するクラスは、すべての方法を強制的に実装しなければならないことを意味する.
宣言時にインタフェースキーを使用します.
interface Vehicle {
    abstract void run ();

    abstract void move ();
}
抽象クラスは何ですか.
通常、Javaのクラスは2つに分類されます.
一般クラスと抽象クラスに分けられます.(ここでは、インタフェースはクラスではありません)
抽象クラスは通常クラスと何の違いもありません.クラスにすぎません.抽象的なメソッドを宣言し、継承によってサブクラスで完了するように導きます.したがって、未完成の設計図とも呼ばれる.継承に使用されるクラスであるため、オブジェクトを個別に作成することはできません.
classの前にabstract予約語を使用して、継承によって実装する必要があることを示し、宣言のみを作成する抽象的な方法を宣言できます.
抽象クラスには、0つ以上の抽象メソッド(実装されていないメソッド)があり、通常のメソッド、通常の変数があります.
従って界面作用もあり,実現体の突然変異類もある.
abstract class Animal {



abstract void bark();

void feed() {

   .....
}



}
なぜ両者を混同し、混乱を招いたのか.
抽象クラス、インタフェースはインスタンス化できません.
そのため、表面はインタフェースと同じように見えます.
インタフェースと抽象クラスの使用方法
インタフェースを継承するにはimplementsキーワードを使用します.
extendsキーワードを使用して抽象クラスを継承します.
class Car implements Vehicle {
    Car() {}



    void run() {

....

 }



 void move() {

   ....

 }

}
class Dog extends Animal {

Dog() {}



void bark() {

  ....

}

}
上記のキーワードにより,抽象クラスとインタフェースの違いを感じることができる.
インタフェースの継承状況はすべての方法を実現した.
逆に,抽象クラスを継承する場合は,通常のメソッドではなく抽象メソッドのみが実現される.
これは次のことを意味します.
抽象クラスはキーワードに従って拡張・継承され,継承の概念となる.(feedメソッドは継承され、実装する必要はありません)
したがって、親と子の関係を表す階層構造だ.
しかし,インタフェースは概念を継承するのではなく,同じ動作のために強制的に実施される.
要するに,抽象クラスが継承概念であり,インタフェースが継承概念ではないことを理解すれば,それらの目的を区別することができる.
インタフェースを使用する理由
設計図に考えればいいです.
一つの約束,すなわち具体的な約束であるため,連携の必要条件と考えられる.
大きなプロジェクトや開発者が多ければ多いほど、インタフェースがメリットになります.
抽象クラスはなぜ使用されますか?
これは強制的に相続するためです.
親クラスでのみ定義され、実際の操作は子クラスで行われます.
この抽象クラスの性質がよく反映されているのは工場メソッドモデルである.
次の文章で議論するつもりですが、参考にするともっと理解に役立ちます.
ファクトリメソッドモード-https://mygumi.tistory.com/264