Dart言語の基本概念: コンストラクタ、インスタンス生成、継承、抽象クラス、Mixin

Flutter
スポンサーリンク

この記事では、Dartの基本的なオブジェクト指向プログラミングの概念について解説します。

クラスにおける5つの基本概念

1. コンストラクタ

コンストラクタは、クラスのインスタンスが生成される際に自動的に呼び出されるメソッドです。クラス名と同名のメソッドとして定義します。

class Person {
  String name;

  // コンストラクタ
  Person(this.name) {
    print('インスタンスが生成されました。');
  }
}

void main() {
  var person = Person('John'); // インスタンス生成時にコンストラクタが呼ばれる
}

2. インスタンスの生成

newキーワードを使用してクラスのインスタンスを生成します。

ただ、Dart 2以降ではnewキーワードはオプショナルです。

class Dog {
  String name;

  Dog(this.name);
}

void main() {
  var dog = new Dog('Rex'); // 'new'を使用してインスタンスを生成
}

3. 継承

extendsキーワードを使用して、親クラスのプロパティとメソッドを子クラスに継承します。

class Animal {
  void eat() {
    print('食べる');
  }
}

class Cat extends Animal { // Animalクラスを継承
  void meow() {
    print('ニャー');
  }
}

void main() {
  var cat = Cat();
  cat.eat(); // 親クラスのメソッドを呼び出す
  cat.meow();
}

4. 抽象クラス

抽象クラスは、インスタンス化できないクラスで、継承を前提としています。

またその際、**abstract**キーワードを使用します。

abstract class Shape {
  void draw(); // 抽象メソッド
}

class Circle extends Shape {
  void draw() {
    print('円を描く');
  }
}

void main() {
  var circle = Circle();
  circle.draw();
}

5. Mixin

Mixinを使用すると、他のクラスのフィールドやメソッドを、継承せずにクラスに追加できます。

またその際、**with**キーワードを使用します。

mixin Flyer {
  void fly() {
    print('飛ぶ');
  }
}

class Bird with Flyer {} // Flyerの機能をBirdクラスに追加

void main() {
  var bird = Bird();
  bird.fly(); // Mixinからのメソッドを呼び出す
}

まとめ

この記事では、Dartの基本的なオブジェクト指向プログラミングの概念について解説しました。これらの概念は、Flutterアプリケーションの開発において非常に重要です。コードの再利用、保守性の向上、柔軟な設計が可能になります。