インタフェース、抽象クラス、クラスの関係

4033 ワード

単一の親のみを継承できます.複数のインタフェースを実装できます.これはJavaがその多態性を実現する重要な手段であり,インタフェース,抽象クラス,クラス間の関係もカバーしている.
きほんとくせい
1.インタフェース
インタフェースのプロパティにはフィールドとメソッドがあり、関数を構築していない理由があります.インタフェースはクラス継承によって多態性を実現するために使用され、インスタンス化できません.
    1. プロパティ:public、static、finalのみで修飾でき、private、protected、volatle、transient、strictfp、synchronizedで修飾できません.
    2. メソッドの定義上JDK 1.7とJDK 1.8大きな違いがありました
         - JDK1.7:インタフェース内のメソッドはすべて抽象メソッドでなければならない.この場合のインタフェースは特殊な抽象クラスと見なすことができる
インタフェースの抽象メソッドの定義:
//           public protected    ,           public  
//protected    、    ,  public ,      ,      ,        
//class,protected   private,           
public abstract void method();

         - JDK1.8:JDK 1と比較する.7 2つの最大の変更点(すべて定義可能なコードに基づいて実現される方法)
複数の静的非抽象メソッドを定義できます
//        public
public static void method(){
    //do something
}

複数のデフォルトメソッドを定義できます
//  default       
public default void method(){
    //do something
}

Tip:JDK1.8,インタフェースの方法はすべてpublicで修飾しなければならなくて、static、abstract、defaultは専門の方法を修飾して、混合して使うことができません
2.クラス
クラスのプロパティは、フィールド、メソッド、コンストラクション関数、コードブロック、および静的コードブロックから構成されます.
    1. フィールド
public static final String field = "this is field property";

    2. 方法
public void method(){
    //do something
}

    3. コンストラクタ
public Constructor(){
    //do something
}

    4.コードブロック、クラスの内部、メソッドの外に定義されます.インスタンスが作成されると、コードが実行されます.
{
    //do something
}

    5.静的コードブロック、クラス内部、メソッド外に定義されます.クラスがロードされると、コードが実行されます.
static{
    //do something
}

3.抽象クラス
抽象クラスのプロパティは、主にフィールド、メソッド、コンストラクション関数、コードブロック、および静的コードブロックから構成されます.
抽象クラスの属性はクラスの定義規則とほぼ同じであり,メソッドを除いて抽象クラスのメソッドは抽象メソッドの定義を許可する(コード実装のないメソッド)
//abstract                   
//              public protected  
public abstract void method();

関係
1.インタフェースとクラス
-クラスは複数のインタフェースを実装可能
2.インタフェースと抽象クラス
-抽象クラスは、複数のインタフェースを実装することもできます.
-抽象クラスの最大のメリットは、複数のインタフェースを実装できることですが、すべてのインタフェースメソッドを実装する必要はありません.モジュール化設計を行うときに役立ちます.
3.抽象クラスとクラス
-クラスは1つの抽象クラスのみを継承し、クラスは1つの抽象クラスのみを継承します.
-特殊なのはスーパークラスObjectで、Javaのすべてのクラスが継承されています.(@Override)Objectを書き換える方法があります.
4.インタフェースとインタフェース
-インタフェースは複数のインタフェースを継承し、カンマで区切ることができます.インタフェース実装クラスはすべてのインタフェースを実装する必要があります.
-クラスの単一継承の問題を別の角度から解決
Tip:各段階の理解が異なる場合があります.その後、変更と補足が行われます.