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

おすすめプログラミングスクール

▶︎ 侍エンジニア
Flutterが学習できるプログラミングスクール。エキスパートコースは転職・就職サポート付き
「エキスパートコース」の詳細は無料カウセリングで相談

▶︎ DMM WEBCAMP
自社開発・受託開発企業への転職実績多数。受講開始20日以内なら無条件で全額返金。


▶︎
ポテパンキャンプ
Webエンジニア輩出No.1。開発できる開発企業への転職成功をサポート。全額返金保証あり。


▶︎
テックブースト
フリーランス特化型プログラミングスクール。スクール在籍中に案件受注から納品を体験できる。

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|スーパークラスの継承

サブクラスの生成

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のプロパティ・メソッドはスーパークラス同様に使用できます。

\ Udemyの最新セール状況をチェック /

Udemyの口コミ・評判はこちら

スポンサーリンク

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