【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part19 コンストラクタ
「基礎 から 学ぶ Flutter 」という書籍で 学習 したことを ブログでアウトプットしていこうと思います。今回は Dart編 ( part19 )です。
前回
【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part18 クラス
今回からコンストラクタの学習に入ります。
コンストラクタ
初めに
クラスの中に、クラスメイト同じメソッド名を定義すると「コンストラクタ」として認識されます。
class Hoge {
// String name = null; Stringにnullを割り当てると怒られます!なんで!?
String name = '';
Hoge(String name) {
this.name = name;
}
}
void main() {
var a = Hoge('太郎');
}
ちなみに、このコード(Hogeのコンストラクタ)は公式では「バッドコード」に指定されています!
本書でも記載されていますが、シンタックスシュガーが用意されているのでそちらを使用するのが正しい(?)ようです。
class Hoge {
// String name = null; Stringにnullを割り当てると怒られます!なんで!?
String name = '';
Hoge(this.name);
}
void main() {
var a = Hoge('太郎');
}
・・・時代の流れなんですかね。
しっかり覚えないといけないですね。
コンストラクタを宣言していない場合は「デフォルトのコンストラクタ」が自動的に挿入されます。
コンストラクタは継承元から継承しません。
Javaと同じですね。安心です。
となると、以下のコードはコンパイルエラーとなります。
class Hoge {
String name = '';
// コンストラクタを明示的に実装すると「デフォルトコンストラクタ」は挿入されません。
Hoge(this.name);
}
// このクラスはコンパイルエラーとなります。
class Fuga extends Hoge{
// デフォルトコンストラクタがここに挿入されます。
// このコンストラクタ内で継承元の「引数無し」のコンストラクタを呼び出そうとします。
// しかしHogeには「引数無し」のコンストラクタは存在しません。
}
void main() {
var a = Hoge('太郎');
}
デフォルトコンストラクタ
引数を持たず、継承元の「引数無し」のコンストラクタを呼び出すコードのみが実装されたコンストラクタを指します。
最後に
コンストラクタはJavaとそん色ないくらいそっくり!
復習しているような感じではかどります。
今日はここまで!
ディスカッション
コメント一覧
まだ、コメントがありません