インターフェイスと抽象クラスは、アーキテクチャを設計し、コントラクトと動作仕様を提供するために Java で使用されます。インターフェイスは実装されていないメソッド シグネチャを定義し、インターフェイスを実装するクラスは実装を提供する必要があります。利点としては、分離、再利用、一貫した動作の強制などが挙げられます。抽象クラスには、抽象メソッド (実装されていない) と具象メソッド (実装されている) が含まれており、部分的な実装や不要なオブジェクトの作成の防止などの利点があります。主な違いは、インターフェイスは完全に実装する必要があるのに対し、抽象クラスは部分的に実装でき、インターフェイスは複数のクラスで実装できるのに対し、抽象クラスは親クラスを 1 つだけ持つことができることです。インターフェイスはプラグ可能なサービスの実装によく使用されますが、抽象クラスは共有のデフォルト動作に使用されます。
Java では、インターフェイスと抽象クラスが、保守可能で拡張可能なコード手段を構築するための鍵となります。これらにより、開発者は詳細を実装することなく、コントラクトを定義したり、動作を指定したりできます。
利点:
利点:
インターフェース | 抽象クラス | |
---|---|---|
すべてのメソッドを実装する必要があります | メソッドの部分的な実装 | |
インスタンス化できません | 直接インスタンス化できません | |
パブリックおよびデフォルトにすることができます | パブリック、プロテクト、およびデフォルトのみにすることができます | |
複数の実装を使用できます | 親クラスは 1 つだけ持つことができます |
interface DataProvider {
List<Object> getData();
}
class FileDataProvider implements DataProvider {
@Override
public List<Object> getData() {
// 从文件读数据
}
}
class DatabaseDataProvider implements DataProvider {
@Override
public List<Object> getData() {
// 从数据库读数据
}
}
// 使用不同的数据提供器读取数据
DataProvider dataProvider = new FileDataProvider();
List<Object> data = dataProvider.getData();
abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public abstract void speak();
public void eat() {
// 默认吃饭行为
}
}
class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
public void speak() {
System.out.println("汪汪");
}
}
// 创建并使用 Dog 对象
Dog dog = new Dog("Spot");
dog.speak(); // 输出 "汪汪"
dog.eat(); // 使用 Animal 的默认吃饭行为
以上がJava 設計アーキテクチャにおけるインターフェイスと抽象クラスの適用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。