現役エンジニアに悩みを無料相談詳細はこちら

【Flutter/Dart】クラス|定義・継承・使い方まとめ

Dartの使い方を初心者向けに紹介します。

本記事では「クラス」の使い方を解説していきます。

目次

クラス(class)とは?

void main() {
  var car = Car(180);
  print(car.maxSpeed);
  car.drive();
}

class Car {
  int maxSpeed;

  Car(this.maxSpeed);

  void drive() {
    print('走行中');
  }
}

//結果
//180
//走行中

クラスとは様々なプロパティ(変数)、メソッド(関数)を定義できる設計図のようなものです。

クラスで定義したプロパティ、メソッドをインスタンス化したオブジェクトで使用できます。クラスをインスタンス化する際にコンストラクタで値を渡すことも可能です。

クラスの基本的な使い方

クラスの定義

class クラス名{};

クラス生成時に値を渡さない、処理を実行しない場合はコンストラクタは不要です。

class クラス名 {
  クラス名() {}
}

クラス生成時に値を渡す、処理を実行したい場合はコンストラクタを使用しクラスを定義します。

クラスの生成(インスタンス化)

var オブジェクト名 = クラス名();
var オブジェクト名 = クラス名(引数);

上記コードのように定義したクラスを生成します。

コンストラクタで引数を使用する場合は値を渡します。

プロパティ・メソッドの呼び出し

オブジェクト名.プロパティ名;
オブジェクト名.メソッド名();

クラスから生成したオブジェクトはクラスで定義されたプロパティ・メソッドを上記のように呼び出せます。

サンプルコード

void main() {
  var hello = Hello('Taro');
  hello.helloWho();
}

class Hello {
  String name;

  Hello(this.name) {
    print('Hello World');
  }

  void helloWho() {
    print('Hello! ${this.name}');
  }
}

//結果
//Hello World
//Hello! Taro

static|インスタンス化せずに呼び出す

クラスのプロパティ・メソッドをstatic修飾子を使って定義することで、クラスをインスタンス化せずクラスそのものを直接呼び出してクラスのプロパティ・メソッドを使用できます。

定義

class クラス名 {
  static 型 プロパティ名 = 値;

  static 型 メソッド名() {
    処理
  }
}

クラスのプロパティ・メソッドをそれぞれ静的プロパティ・静的メソッドにするには「static修飾子」を宣言するだけです。

呼び出し

クラス名.静的プロパティ;
クラス名.静的メソッド();

静的プロパティ・静的メソッドはそれぞれインスタンス化したクラスのプロパティ・メソッドを呼び出すのと同様に呼び出します。

extends|スーパークラスの継承

extends|サブクラスの生成

class サブクラス名 extends 親クラス名{}

親クラスで引数を必要としない場合は上記コードのようにクラスを継承できます。

class サブクラス名 extends 親クラス名 {
  サブクラス名(引数) : super(引数);
}

親クラスで引数を必要とする場合、サブスクラスのコンストラクタで「super」を使って親クラスのコンストラクタを呼び出し継承します。

親クラスのコンストラクタに引数を渡す

class サブクラス名 extends 親クラス名 {
  サブクラス名(引数) : super(引数);
}

親クラスのサブクラスのコンストラクタで「super」を使って親クラスのコンストラクタを呼び出し継承します。

親クラスのプロパティ・メソッドを呼び出す

super.親クラスのプロパティ名
super.親クラスのメソッド名

サブクラスから親クラスのプロパティ・メソッドを呼び出すには上記のように「super.〇〇」で呼び出します。

@override|親クラスのメソッドをオーバーライド

@override
void 親クラスのメソッド(){}

親クラスのメソッドなどをオーバーライドするには「@override」で再定義するだけです。

mixin|複数のクラスを継承

複数のクラスを継承したい場合は「mixin」でクラスを定義し継承します。

定義

mixin クラス名{}

mixinはクラス同様に定義します。

継承

class サブクラス名 with クラス名, クラス名{}
class サブクラス名 extends スーパークラス名 with クラス名{}

mixinを継承するには「with」を使用し、複数のクラスを継承する場合は「,」で区切ります。

スーパークラスとmixinを同時に継承することも可能です。

呼び出し

var オブジェクト名 = クラス名();

オブジェクト名.mixinのプロパティ;
オブジェクト名.mixinのメソッド();

継承したmixinのプロパティ・メソッドはスーパークラス同様に使用できます。

効率的にFlutterを学習したい方は世界最大級のオンライン学習サイトUdemyがオススメ。

最安1200円から独学でスキルアップを目指せます!

\ サンプル動画・30日間返金保証あり /

  • URLをコピーしました!
目次
閉じる