サーチ…


クラスの作成

クラスは次のように作成できます:

class InputField {
  int maxLength;
  String name;
}

newキーワードを使用してクラスをインスタンス化すると、デフォルトでフィールド値がnullになります。

var field = new InputField();

次に、フィールド値にアクセスできます。

// this will trigger the setter
field.name = "fieldname";

// this will trigger the getter
print(field.name);

メンバー

クラスにはメンバーがいます。

インスタンス変数は、型名付き/なしで宣言でき、オプションで初期化されます。初期化されていないメンバは、コンストラクタによって別の値に設定されていない限り、 nullの値を持ちnull

class Foo {
  var member1;
  int member2;
  String member3 = "Hello world!";
}

クラス変数は、 staticキーワードを使用して宣言されます。

class Bar {
  static var member4;
  static String member5;
  static int member6 = 42;
}

メソッドが引数を取らず、高速で、値を返し、目に見える副作用を持たない場合は、getterメソッドを使用できます。

class Foo {
  String get bar {
    var result;
    // ...
    return result;
  }
}

Gettersは引数を取ることはないので、(空の)パラメータリストのかっこは、上記のようにgetterを宣言するため、およびそれらを呼び出すために次のように省略されます:

main() {
  var foo = new Foo();
  print(foo.bar); // prints "bar"
}

setterメソッドもあります。これには1つの引数だけが必要です。

class Foo {
  String _bar;

  String get bar => _bar;

  void set bar(String value) {
    _bar = value;
  }
}

setterを呼び出す構文は、変数代入と同じです。

main() {
  var foo = new Foo();
  foo.bar = "this is calling a setter method";
}

コンストラクタ

クラスコンストラクターはそのクラスと同じ名前を持たなければなりません。

Personクラスのコンストラクタを作成しましょう:

class Person {
  String name;
  String gender;
  int age;

  Person(this.name, this.gender, this.age);
}

上記の例は、以下の方法よりもコンストラクタを定義するための、よりシンプルで優れた方法です。これも可能です。

class Person {
  String name;
  String gender;
  int age;

  Person(String name, String gender, int age) {
    this.name = name;
    this.gender = gender;
    this.age = age;
  }
}

これでPersonのインスタンスを作成できます:

var alice = new Person('Alice', 'female', 21);


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow