【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part15 クラス

基礎 から 学ぶ Flutter 」という書籍で  学習 したことを ブログでアウトプットしていこうと思います。今回は Dart編 ( part15 )です。

 

前回

【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part14 クラス

クラスの学習の続きになります。

クラス

暗黙的インターフェイス

すべてのクラスは、そのクラスのすべてのインスタンスメンバーとそれが実装するすべてのメソッドを含むインナーフェイスを暗黙的に定義します。

と、本書にありました。

インタフェースの機能が無いわけではないんですね!失礼しましたm(_ _)m。
クラスを作成した際に、自動的に定義されるものなんですね。
前回のブログを確認して訂正せねば。

implemetsキーワードを使用します。

abstract class AbstractHogeClass {
  // ただのメソッドに見えますが、これがAbstractメソッドです。
  // Abstractメソッドは実装を持つことができません。セミコロンで止めます。
  void fuga();
  
  // 「実装」を持つメソッドは「普通ののメソッド」と判断されます。
  // 継承先のクラスは実装を強制されません。
  void fufufu() {
    print ('fufufu');
  }
}
// AbstractHogeClassを継承しました。
// fugaは絶対に実装しなければいけません。(未実装の場合はコンパイルエラーです。)
class HogeImplemetsClass extends AbstractHogeClass {
  void fuga() {
    print('絶対実装しないと!');
  }
}

// インターフェイスの機能を試しました。
// extendsではなく、implemetsキーワードを使用します。
// このクラスはHogeImplemetsClassのfugaメソッドだけではなく!
// AbstractHogeClassのfufufuメソッドも実装する必要があります。
class HogableClass implements HogeImplemetsClass {
  void fufufu() {
    print('HogableClassのfufufu');
  }
  void fuga() {
    print('HogableClassのfuga');
  }
}

void main() {
  // Abstractクラスはインスタンス化できません。
  // 実装を持たないメソッドが定義されることがあるのでできません。
  //var a = AbstractHogeClass();
  
  var b = HogeImplemetsClass();
  b.fuga();
  
  // インターフェイスの確認
  var c = HogableClass();
  c.fufufu();
  c.fuga();
}

最後に

Dartではinterfaceというキーワードが無いのですが、「インターフェイスの機能」は実現されていました。
暗黙的インターフェイスというらしいです。

普通のクラスがインタフェースになるというなんだか妙な感覚に陥ってしまいそうです😅
今日はここまで!