ディレクトリ
抽象クラスとインタフェースは何ですか
抽象クラス
この方法は含む1つの抽象クラスと呼ばれる、より抽象クラス、抽象クラスは、特定のメソッドや変数を持つことができます。
抽象クラスは、抽象的で修飾され、パブリックまたは保護されなければならない(デフォルトはpublic)
abstract public void test();
//方法没有实现,留给子类去实现(所以抽象类不能是private,因为private子类无法继承也就无法实现)
抽象クラスは、サブクラスのためのテンプレートを提供する抽象クラスのサブクラスが関連を実装する必要があります
抽象クラスと普通のクラスとの違い
1、抽象メソッドは、パブリックまたは保護、公共のデフォルトである必要があります。一般的なカテゴリは、デフォルトまたはプライベートでもよく、デフォルトはデフォルトです。
2、抽象クラスは、オブジェクトを作成することはできません。
3、あなたは抽象クラスを継承させたい、とあなたは、サブクラスの特定のメソッド、抽象クラスが実装しなければならない、サブクラスのオブジェクトを作成したい場合。それは実装を提供していない場合は、サブクラスも抽象クラスです。
インターフェース
抽象クラスよりも抽象的にもインタフェース、インタフェースは完全に抽象クラスを生成し、それが特定の実装を提供していません。
インターフェイスは、変数やメソッドを含むことができ、デフォルトのpublic static final変数、およびそれだけのpublic static finalで、パブリック抽象メソッドをデフォルト、そして唯一の公共抽象的です。通常の状況下では、インタフェース変数で定義されていません。
interface test{
(public static final)int VALUE=0;
(public abstract)int getValue();
}
抽象クラスとインタフェースとの間の差
(「多重継承」)複数のインタフェースを1クラスのみ継承抽象クラス(Javaで単一継承)(延ばす)ことができ、それらは達成(実現)することができます。
図2に示すように、最終的な(抽象クラスは、独自の変数は、(抽象抽象クラスと呼ばれる1つ以上のクラスメソッドで)非抽象メソッドを有することができる有することができ、インターフェースは、静的変数(静的)であることができ、変更することができません)、この方法のみ)(抽象抽象メソッドであることができます。
図3は、抽象クラスを継承させたい、とあなたは、サブクラス固有のメソッドは抽象クラスを実装する必要があり、サブクラスのオブジェクトを作成したいです。それは実装を提供していない場合は、サブクラスも抽象クラスです。サブクラスは、インターフェイスを実装し、あなたは完全に実現インタフェースのすべての抽象メソッドを置く必要があります。インターフェイスは、インターフェイスを継承することができ、その後、親クラスはインタフェースを実装する必要はありません。