class MyObj {これは、エラーになります。「同じ名前のメソッドが複数ある」ためです。Dartでは、クラスの中に同じ名前のメソッドを複数置くことはできません。
String name;
num age;
MyObj(){
this.name = 'noname';
this.age = 0;
}
MyObj(String name, num age){
this.name = name;
this.age = age;
}
……略……
}
クラス名.名前 ( 引数 ){コンストラクタはクラス名のメソッドですが、クラス名の後に更に名前をつけることで、別のコンストラクタを用意できるようにしたのですね。
……略……
}
MyObj()これで、new MyObj() とすれば引数なしのコンストラクタが呼び出されますし、new MyObj.make(○○,××) とすれば、MyObj.makeコンストラクタが呼び出されるようになる、というわけです。
MyObj.make(String name, num age)
MyObj() : this.make('noname', 0);普通は、()の後に{}をつけて、そこに処理を記述するはずです。が、{}がなくて、:の後に this.make('noname', 0); とmakeコンストラクタを呼び出しています。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
void main() { MyObj taro = new MyObj.make('Taro', 35); taro.printData(); } class MyObj { String name; num age; MyObj() : this.make('noname', 0); MyObj.make(String name, num age){ this.name = name; this.age = age; } void printData(){ String re = '<MyObj "' + this.name + '"(' + this.age.toString() + ')>'; print(re); } }
<< 前へ | 次へ >> |