インターフェイスを使用する場合: さまざまなタイプのオブジェクトによって実装される共有関数を定義します。コールバック インターフェイス (イベント リスナーなど) を定義します。多重継承を実装します。抽象クラスを使用する場合: 継承を通じて実装される共通関数を定義します。単一継承とポリモーフィズムを実装します。保護されたメソッドまたはフィールドを定義します。
Java でインターフェイスと抽象クラスを使用する場合
Java では、インターフェイスと抽象クラスは両方ともオブジェクトの定義に使用されます。行動の概念。それらは似ていますが、使用目的には明らかな違いがあります。
インターフェイス
インターフェイスは、メソッド シグネチャ (つまり、実装のないメソッド宣言) を含むコントラクトです。これは、クラスが実装する必要があるパブリック メソッドのセットを定義します。
インターフェイスを使用するのはどのような場合ですか?
public interface Animal { void eat(); void sleep(); }
抽象クラス
抽象クラスは、メソッド実装と抽象メソッドの組み合わせを含む部分的に抽象的なクラスです。抽象クラスはインスタンス化できませんが、サブクラスによって継承できます。
いつ抽象クラスを使用するか?
public abstract class Mammal { public void giveBirth() { ... } public abstract void makeSound(); }
実用的なケース
インターフェイス
面積と周長を計算するために定義された Shape インターフェイスを作成するパブリック メソッド:
public interface Shape { double getArea(); double getPerimeter(); }
このインターフェイスを使用して Rectangle クラスと Circle クラスを作成します:
public class Rectangle implements Shape { // ... } public class Circle implements Shape { // ... }
Abstract クラス
面積を計算するための Protected メソッド用に定義された Shape 抽象クラスを作成しますおよび周長:
public abstract class Shape { protected double area; protected double perimeter; public abstract double getArea(); public abstract double getPerimeter(); }
この抽象クラスを使用して Rectangle クラスと Circle クラスを作成し、getArea() メソッドと getPerimeter() メソッドをオーバーライドします:
public class Rectangle extends Shape { // ... } public class Circle extends Shape { // ... }
以上がJava でインターフェースを使用する場合と抽象クラスを使用する場合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。