1. ホーム
  2. oop

[解決済み] Dartでインターフェイスを定義するには?

2023-05-13 01:03:29

質問

Javaで、インターフェイス IsSilly と、それを実装した1つ以上の具象型があります。

public interface IsSilly {
    public void makePeopleLaugh();
}

public class Clown implements IsSilly {
    @Override
    public void makePeopleLaugh() {
        // Here is where the magic happens
    }
}

public class Comedian implements IsSilly {
    @Override
    public void makePeopleLaugh() {
        // Here is where the magic happens
    }
}

Dartでこのコードに相当するものは何でしょうか?

公式の ドキュメント を読んでみたところ、Dart にはネイティブの interface 型はないようです。では、平均的な Dartisan はどのようにしてインターフェース分離の原則を達成するのでしょうか?

どのように解決するのか?

Dartでは 暗黙のインターフェイス .

すべてのクラスは暗黙のうちに、そのクラスとそのクラスが実装するインターフェースのすべてのインスタンスメンバを含むインターフェースを定義しています。もし、Bの実装を継承せずにBのAPIをサポートするクラスAを作りたい場合、クラスAはBのインターフェイスを実装する必要があります。

クラスは、1つまたは複数のインターフェースを implements 節で宣言し、そのインタフェースが必要とするAPIを提供することで実装します。

ですから、あなたの例はDartでこのように翻訳することができます。

abstract class IsSilly {
  void makePeopleLaugh();
}

class Clown implements IsSilly {
  void makePeopleLaugh() {
    // Here is where the magic happens
  }
}

class Comedian implements IsSilly {
  void makePeopleLaugh() {
    // Here is where the magic happens
  }
}