6
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Dart】クラスやコンストラクタなど基本文法

Last updated at Posted at 2020-04-22

Dartの基本的な文法についてまとめました。

また、あやふやだったクラスやインスタンスなどの整理も同時に行いました。

オブジェクト

物。クラスやインスタンスをざっくりと表現するもの。

オブジェクト指向によってクラスやインスタンスが作られたので両方ともオブジェクトであると言えます。

オブジェクト = クラスとかインスタンスとかを説明するもの

ぐらいの認識でいいのではないでしょうか。自分はそうしてます。

モノの特性や動作の情報をまとめた箱みたいなもの。
特性をプロパティ、動作をメソッドと呼ぶ。
乃木坂46で、クラス・インスタンス・コンストラクタを理解する

クラス

インスタンスを生み出すための設計図。

クラス(乃木坂46や車、ポケモンなど概念的なもの)を設計図としてまとめておくことで効率良くインスタンス(白石麻衣やBMW、カイオーガ)を生み出します。

もう少し具体的に説明するとその概念の普遍的な特徴(ポケモンで言えば、名前やタイプ)をあらかじめ設計しておくことでいちいち個別に名前やタイプを定義し直すことなく、代入するだけで新たなポケモンを生み出します。

pokemon.dart
class Pokemon {
  final String name; //名前
  final String type; //タイプ
  final String ability; //特性
  final String stats; //個体値

  Pokemon({this.pid, this.name, this.type, this.ability, this.stats});
   //コンストラクタ
}

インスタンス

クラスから生み出されるオブジェクト。

コンストラクタ

初期化をし、インスタンスを生成する関数。

不思議なもので初期化して一旦まっさらな状態にしないと新しいポケモンが考えられないようです。

また、Dartではクラスと同じ名前のメソッドを宣言することでコンストラクタを宣言できます。

Pokemon({this.name, this.type, this.ability, this.stats});

この部分ですね。

クラスの継承

Dartはクラスとミックスインベースの継承を基本としたオブジェクト指向言語なので、全てのクラスは一つのスーパークラスを持ちます。

Dartではサブクラスはスーパークラス(継承元)のコンストラクタを呼び出すことはないので呼び出すにはsuperを使用します。

みずタイプクラスからカイオーガを生成しようとすると多分こうなります。

watertype.dart
class WaterType extends Pokemon {
  WaterType(String name, String type, String ability, String stats) : super(String name, String type, String ability, String stats);

  void attacks() {
    print('ハイドロポンプ');
  }

  var kyogre = new WaterType('カイオーガ', 'みず', 'あめふらし', 'めっちゃ強い');

  kyogre.attacks();
}

またサブクラスからスーパークラスのオーバーライド(上書き)をして新しくメソッドを定義し直すことも可能です。

firetype.dart
class FireType extends WaterType {
  FireType(String name, String type, String ability, String stats) : super(String name, String type, String ability, String stats);

  @override
  void attacks() {
    print('ねっぷう');
  }

  var charizard = new FireType('リザードン', 'ほのお', 'もうか', '強い');

  charizard.attacks();
}

参考

6
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?