ホームページ  >  記事  >  Java  >  Java におけるインターフェイスと抽象クラスの役割と設計原則

Java におけるインターフェイスと抽象クラスの役割と設計原則

PHPz
PHPzオリジナル
2024-05-02 16:48:01707ブラウズ

インターフェイスと抽象クラスの役割: インターフェイス: 必要な動作を定義し、実装クラスが特定の仕様に準拠するように強制します。抽象クラス: 共通の動作を定義し、サブクラスにそれを強制的に継承させ、部分的な実装を提供し、サブクラスが特定の動作をカスタマイズできるようにします。設計原則: インターフェイス: 必要な動作を定義し、小さく焦点を絞ったものにしてください。抽象クラス: 抽象メソッドのみを宣言し、共通の動作を実現する具体的なメソッドを提供します。例: 形状クラス階層では、Shape インターフェイスは面積を取得する動作を定義し、AbstractShape 抽象クラスは幅と高さのフィールドを提供し、Rectangle クラスと Circle クラスは抽象クラスを継承して特定の形状の面積計算メソッドを提供します。 。

Java 中接口和抽象类的作用和设计原则

#Java におけるインターフェイスと抽象クラスの役割と設計原則

#インターフェイス

    メソッドを定義しますが、実装は提供しません。
  • 一連のパブリック定数を宣言します。
  • これを実装するクラスに、すべてのメソッドの実装を提供するように強制します。
  • 構文:
  • public interface InterfaceName { ... }

抽象クラス

    定義メソッド、抽象メソッドまたは具象メソッドのいずれかにすることができます。
  • 抽象メソッドは実装されていないため、サブクラスによって実装する必要があります。
  • フィールドとコンストラクターを使用できます。
  • 構文:
  • public abstract class AbstractClassName { ... }

Function

Interface

    分離を達成し、クラスがそれぞれの責任に集中できるようにします。
  • モジュール性と拡張性を促進して、コンポーネントを簡単に交換および拡張できるようにします。
  • 動作コントラクトを定義して、実装クラスが特定の仕様に準拠するように強制します。

抽象クラス

    共通の動作を定義し、サブクラスにそれを強制的に継承させます。
  • サブクラスで繰り返されるコードを減らすために部分的な実装を提供します。
  • サブクラスが特定の動作をカスタマイズできるようにするフック メソッドを提供します。
#設計原則

インターフェイス

必要な動作のみを定義します。
  • メソッド名は、期待される動作を示す、明確かつ簡潔である必要があります。
  • インターフェイスは小さく、集中的に保つ必要があります。
  • #抽象クラス

抽象メソッドを宣言し、パブリックな動作を定義するだけです。

    一般的な動作を実装するための具体的なメソッドを提供します。
  • 共有実装が必要な場合は、インターフェイスの代わりに抽象クラスの使用を検討してください。
  • #実践的なケース
#単純な形状クラス階層を考えてみましょう:

**`

java

interface Shape {

double getArea();

}abstract クラス AbstractShape は Shape {

protected double width;
protected double height;

public AbstractShape(double width, double height) {
    this.width = width;
    this.height = height;
}

public double getWidth() {
    return width;
}

public double getHeight() {
    return height;
}

}

class Rectangle extends AbstractShape {

public Rectangle(double width, double height) {
    super(width, height);
}

@Override
public double getArea() {
    return width * height;
}

}

class Circle extends AbstractShape {

public Circle(double radius) {
    super(radius, radius);
}

@Override
public double getArea() {
    return Math.PI * width * width;
}

}

public class Main {

public static void main(String[] args) {
    Shape rectangle = new Rectangle(4, 5);
    Shape circle = new Circle(3);

    System.out.println("Rectangle area: " + rectangle.getArea());
    System.out.println("Circle area: " + circle.getArea());
}

}

在这个例子中:

* `Shape` 接口定义了一个通用行为:获取形状面积。
* `AbstractShape` 抽象类提供了通用行为的通用实现,例如宽度和高度字段。
* `Rectangle` 和 `Circle` 类通过继承 `AbstractShape` 类来扩展形状类层次结构,并提供特定形状的具体方法来计算面积。

以上がJava におけるインターフェイスと抽象クラスの役割と設計原則の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。