08抽象クラスとインタフェース
2514 ワード
抽象クラス
抽象類は最適化された概念組織方式を代表し、物事の一般的な状態と行為を記述し、それからサブクラスの中でこれらの状態と行為を実現し、対象の多様性に適応する.
抽象クラスの宣言と実装
Javaにおける抽象クラスと抽象メソッドの修飾子は抽象クラスはインスタンス化されず、特定のクラスのみがインスタンス化されます. 抽象クラスにはデフォルトのコンストラクション関数があり、サブクラスのインスタンス化呼び出しにのみ使用されます. 抽象クラスには、特定のメソッドおよび抽象メソッド が含まれることができる.
一般クラスにabstractキーワードを付けると抽象クラスになり、条件の制限はありません.しかし、抽象メソッドのあるクラスは抽象クラスとして定義する必要があります.そうしないと、**
インタフェース
抽象クラスよりも抽象的なのはインタフェースであり,インタフェース内のすべての方法は抽象的である.
ヒントJava 8以降はインタフェースにデフォルトメソッドが新たに追加されているため,「インタフェース内のすべてのメソッドは抽象的である」という提案はJava 8以降で議論される. Javaではマルチ継承はサポートされていないが、インタフェースによってマルチ継承よりも強い機能を実現し、javaはインタフェースを通じて異なる階層、さらには関連しないクラスに対して同じ行為をもたらすことができる. インタフェースは特殊な抽象クラスと考えることができ、直接オブジェクトを作成するのに使用できない.インタフェースの役割はいくつかの機能フレームワークを規定することであり、具体的な機能の実現はこのインタフェース制約のクラスによって完成する. インタフェースの定義:定数と抽象メソッドからなるは、インタフェースがアクセス制御子を与えることができることを宣言する. インタフェースは、複数の親インタフェースを継承することもでき、親インタフェース間をカンマで区切ることもできます. システムのデフォルトインタフェースのすべての属性の修飾はpublic static finalで、毕先生が言ったグローバル定数です. システムのデフォルトインタフェースのすべての方法の修飾はpublic abstractである.すなわち抽象的な方法. インタフェースの実装は一連の行為規範を定義し、一つのクラスがこのインターフェースを実現することはインターフェースの定義規範を遵守し、インターフェースで定義されたすべての方法を実現することである. クラスは、複数のインタフェースを実装することができる.インタフェース間はカンマで区切られます. インタフェースを実装するクラスが抽象クラスでない場合、クラスの定義部分で指定されたインタフェースのすべての抽象メソッドを実装する必要があります.そうでない場合、コンパイル時にクラスが抽象クラスでのみオブジェクトを作成できないことを示す. インタフェースの抽象的な方法のアクセス制限子黙はpublic Java 8の新しいプロパティのデフォルトメソッドと静的メソッド
Java 8は、インタフェースでデフォルトメソッドと静的メソッドを宣言する機能を提供します.インタフェースのサンプルコードは次のとおりです.
抽象類は最適化された概念組織方式を代表し、物事の一般的な状態と行為を記述し、それからサブクラスの中でこれらの状態と行為を実現し、対象の多様性に適応する.
抽象クラスの宣言と実装
Javaにおける抽象クラスと抽象メソッドの修飾子は
abstract
であり,抽象メソッドにはメソッドの宣言のみがあり,メソッドの実現はないことに注意する.abstract class {
member var;
method(){…} //
abstract method(); // ,
}
一般クラスにabstractキーワードを付けると抽象クラスになり、条件の制限はありません.しかし、抽象メソッドのあるクラスは抽象クラスとして定義する必要があります.そうしないと、**
The type XXX must be an abstract class to define abstract methods
**Q:抽象キーワードabstractはどのキーワードと共存できないかを提示します.A:private
プライベートコンテンツサブクラスは継承できないので、書き換えることはできません.しかし、abstract修飾の方法は、書き換えることが要求されます.両者が衝突する.final
final修飾の方法は書き換えられない.abstract修飾の方法では,書き換えが要求される.両者が衝突する.static
抽象メソッドがstaticによって修飾される場合、このメソッドはクラス名によって直接呼び出すことができる.抽象メソッドにはメソッド体がなく,このような呼び出しは意味がない.だから、staticで修飾することはできません.インタフェース
抽象クラスよりも抽象的なのはインタフェースであり,インタフェース内のすべての方法は抽象的である.
ヒントJava 8以降はインタフェースにデフォルトメソッドが新たに追加されているため,「インタフェース内のすべてのメソッドは抽象的である」という提案はJava 8以降で議論される.
[public] interface [extends ] {
[public] [static] [final] = ;
[public] [abstract] ( ) [throw ];
}
Java 8は、インタフェースでデフォルトメソッドと静的メソッドを宣言する機能を提供します.インタフェースのサンプルコードは次のとおりです.