Dartの使い方を初心者向けに紹介します。
本記事では「クラス」の使い方を解説していきます。
あわせて読みたい
【Flutter】Dart言語の基本文法まとめ
Flutter初心者向けの「Dart言語チートシート」です。 Dartの基本的な文法をまとめました。 \ Udemyの最新セール状況をチェック / Udemy 公式サイト サンプル動画・30日…
目次
クラス(class)とは?
void main() {
var car = Car(180);
print(car.maxSpeed);
car.drive();
}
class Car {
int maxSpeed;
Car(this.maxSpeed);
void drive() {
print('走行中');
}
}
//結果
//180
//走行中
クラスとは様々なプロパティ(変数)、メソッド(関数)を定義できる設計図のようなものです。
クラスで定義したプロパティ、メソッドをインスタンス化したオブジェクトで使用できます。クラスをインスタンス化する際にコンストラクタで値を渡すことも可能です。
クラスの基本的な使い方
クラスの定義
クラス生成時に値を渡さない、処理を実行しない場合はコンストラクタは不要です。
クラス生成時に値を渡す、処理を実行したい場合はコンストラクタを使用しクラスを定義します。
クラスの生成(インスタンス化)
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修飾子」を宣言するだけです。
呼び出し
クラス名.静的プロパティ;
クラス名.静的メソッド();
静的プロパティ・静的メソッドはそれぞれインスタンス化したクラスのプロパティ・メソッドを呼び出すのと同様に呼び出します。
あわせて読みたい
【Flutter/Dart】static|静的プロパティ・静的メソッド
Dartのクラスで使用できる「static修飾子」の使い方を紹介します。 static修飾子を使用することで静的プロパティ・静的メソッドを定義できます。 【静的プロパティ・静…
extends|スーパークラスの継承
サブクラスの生成
class サブクラス名 extends 親クラス名{}
親クラスで引数を必要としない場合は上記コードのようにクラスを継承できます。
class サブクラス名 extends 親クラス名 {
サブクラス名(引数) : super(引数);
}
親クラスで引数を必要とする場合、サブスクラスのコンストラクタで「super」を使って親クラスのコンストラクタを呼び出し継承します。
あわせて読みたい
【Flutter/Dart】extends|親クラスを継承してサブクラスを生成
Dartのクラスを継承する「extends」の使い方を紹介します。 本記事では引数を必要と親クラスの継承方法についても解説していきます。 【extendsの使い方】 親クラスに引…
親クラスのコンストラクタに引数を渡す
class サブクラス名 extends 親クラス名 {
サブクラス名(引数) : super(引数);
}
親クラスのサブクラスのコンストラクタで「super」を使って親クラスのコンストラクタを呼び出し継承します。
親クラスのプロパティ・メソッドを呼び出す
super.親クラスのプロパティ名
super.親クラスのメソッド名
サブクラスから親クラスのプロパティ・メソッドを呼び出すには上記のように「super.〇〇」で呼び出します。
あわせて読みたい
【Flutter/Dart】super|親クラスのプロパティ・メソッドを呼び出す
Dartのサブクラスから親クラスのプロパティ・メソッドを呼び出せる「super」の使い方を紹介します。 継承する親クラスで引数が必要となる場合、サブクラスのコンストラ…
@override|親クラスのメソッドをオーバーライド
@override
void 親クラスのメソッド(){}
親クラスのメソッドなどをオーバーライドするには「@override」で再定義するだけです。
あわせて読みたい
【Flutter/Dart】@override|サブクラスで親クラスのメソッドを上書き
Dartの親クラスのメソッド、ゲッター、セッターをオーバーライドできる「@override」の使い方を紹介します。 @overrideを使用することでサブクラスで故意的にメソッドを…
mixin|複数のクラスを継承
複数のクラスを継承したい場合は「mixin」でクラスを定義し継承します。
定義
mixinはクラス同様に定義します。
継承
class サブクラス名 with クラス名, クラス名{}
class サブクラス名 extends スーパークラス名 with クラス名{}
mixinを継承するには「with」を使用し、複数のクラスを継承する場合は「,」で区切ります。
スーパークラスとmixinを同時に継承することも可能です。
呼び出し
var オブジェクト名 = クラス名();
オブジェクト名.mixinのプロパティ;
オブジェクト名.mixinのメソッド();
継承したmixinのプロパティ・メソッドはスーパークラス同様に使用できます。
あわせて読みたい
【Flutter/Dart】mixin|複数のクラスを継承する
Dartのクラスで複数のクラスを継承できる「mixin」の使い方を紹介します。 「mixin」で定義したクラスはサブクラスで複数継承することができます。 【mixinの使い方】 …