抽象クラス

抽象クラスは、抽象クラスとして宣言されたクラスです—抽象メソッドを含む場合と含まない場合があります。 抽象クラスはインスタンス化できませんが、サブクラス化できます。 抽象クラスには、静的フィールドと静的メソッドがあります。 抽象クラスがサブクラス化されている場合、サブクラスは通常、その親クラス内のすべての抽象メソッドの実装を提供します。 ただし、そうでない場合は、サブクラスもabstractと宣言する必要があります。,

抽象メソッドは、実装なしで宣言されたメソッドです(中かっこなしで、セミコロンが続きます)。

abstract void sum(int a, int b);

これらのステートメントのいずれかがあなたの状況に当てはまる場合は、抽象クラスの使用を検討してください。

  1. いくつかの密接に関連するクラス間でコードを共有したいと思います。
  2. 抽象クラスを拡張するクラスには、多くの一般的なメソッドまたはフィールドがあるか、public以外のアクセス修飾子(protectedやprivateなど)が必要であること
  3. 非静的または非最終的なフィールドを宣言したいとします。, これにより、それらが属するオブジェクトの状態にアクセスして変更できるメソッドを定義できます。

Interface

インターフェイスは、オブジェクトのメソッドの宣言にすぎず、実装ではありません。 インタフェースでは、オブジェクトが実行できる操作の種類を定義します。 これらの操作によって定義されるを実装するクラスのインタフェース。 インターフェイスはクラスと外部の世界との間の契約を形成し、この契約はコンパイラによってビルド時に強制されます。,

これらのステートメントのいずれかが状況に当てはまる場合は、インターフェイスの使用を検討してください。

  1. 無関係なクラスがインターフェイスを実装することを期待しています。 たとえば、ComparableおよびCloneableインターフェイスは、多くの無関係なクラスによって実装
  2. 特定のデータ型の動作を指定したいが、その動作を実装する人については心配しないでください。
  3. 複数の継承を利用したいと思います。,

もともと公開June2016

さらに読む

  • Java抽象クラスを使用するとき
  • Java:Interface Vs.Abstractクラス
  • Javaでインターフェイスと抽象クラスのどちらかを選択する方法