インターフェイスと抽象クラスはどちらもクラス間のコントラクトを定義するためのメカニズムですが、インターフェイスは多重継承を持ち、抽象メソッドのみを含むことができますが、抽象クラスは単一継承のみをサポートし、具象メソッドと属性の両方を含むことができます。インターフェイスはコントラクト定義にさらに注意を払い、コードの再利用を促進します。抽象クラスは冗長性を減らすために部分的な継承を提供しますが、抽象クラスを変更する場合は、サブクラスも同時に変更する必要があります。実際の戦闘では、Shape インターフェースでグラフィックスの面積と周囲長を取得するメソッドが定義されており、抽象クラス Square が面積計算を実装し、その具象サブクラス SpecificSquare が周囲長計算を実装します。
Javaのインターフェースと抽象クラスの類似点、相違点、利点と欠点
Javaでは、インターフェースと抽象クラスはクラス間のコントラクトを定義するために使用されるメカニズムです。両者の間には類似点もあれば、重要な相違点もあります。
類似点
違い
特徴 | インターフェース | 抽象クラス |
---|---|---|
アクセス修飾子 | デフォルトはpublic | はpublic、protected、またはdefaultのいずれかです |
継承 | はい継承しています複数のインターフェース | は 1 つの抽象クラスのみを継承できます |
実装 | は抽象メソッドのみを含めることができます | は抽象メソッドと具象メソッドを含めることができます |
プロパティ | は静的定数と最終定数のみを含めることができます | プロパティを含めることができますとメソッド |
インスタンス化 | インスタンス化できない | インスタンス化できない |
インスタンスメソッド | は抽象メソッドのみを含めることができます | 抽象メソッドと具象メソッドを含めることができます |
優れた欠点タグ
インターフェース
利点:
欠点:
抽象クラス
利点:
欠点:
実践例
Shapeインターフェイスを定義する:
public interface Shape { double getArea(); double getPerimeter(); }
Squareの抽象クラスと具象クラスを作成する:
public abstract class Square implements Shape { protected double side; public Square(double side) { this.side = side; } @Override public double getArea() { return side * side; } } public class SpecificSquare extends Square { public SpecificSquare(double side) { super(side); } @Override public double getPerimeter() { return 4 * side; } }
Squareインターフェイスを使用する:
Shape shape = new SpecificSquare(5.0); double area = shape.getArea(); double perimeter = shape.getPerimeter();
以上がJava のインターフェイスと抽象クラスの類似点、相違点、長所と短所の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。