class MyObj {
String name;
num age;
MyObj(){
this.name = 'noname';
this.age = 0;
}
MyObj(String name, num age){
this.name = name;
this.age = age;
}
……略……
}これは、エラーになります。「同じ名前のメソッドが複数ある」ためです。Dartでは、クラスの中に同じ名前のメソッドを複数置くことはできません。クラス名.名前 ( 引数 ){
……略……
}コンストラクタはクラス名のメソッドですが、クラス名の後に更に名前をつけることで、別のコンストラクタを用意できるようにしたのですね。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);
}
}
| << 前へ | 次へ >> |