libro
www.tuyano.com
初心者のためのDart 2入門

クラスの基本 (3/7)

作成:2018-04-14 08:29
更新:2018-04-14 08:29

■インスタンス変数とメソッドの操作

インスタンスは、クラスをそのままメモリ内にコピーして操作できるようにしたものです。従って、クラスの中にあるものはすべてそのままインスタンス内に作成されています。インスタンス変数やメソッドも、すべてインスタンス内に用意されています。

これらは、「インスタンス . ○○」というように、インスタンスの入っている変数の後にドットを付け、更にその後に利用したいインスタンス変数名やメソッド名を記述して利用します。ここでは、こんな具合に利用していますね。

・インスタンス変数の利用
  taro.name = 'Taro';
  taro.age = 35;

  hanako.name = 'Hanako';
  hanako.age = 28;
インスタンス変数であるnameやageに値を代入しています。taroとhanakoのそれぞれについて操作を行っているのがわかるでしょう。

・メソッドの呼び出し
  taro.printData();

  hanako.printData();
これが、printDataメソッドを呼び出している部分です。これで、taroとhanakoについてそれぞれprintDataが実行されます。実際に実行した結果を見ると、こんな具合に表示されているはずです。
<MyObj "Taro"(35)>
<MyObj "Hanako"(28)>
taroとhanakoのそれぞれのインスタンスの内容を表示されているのがわかるでしょう。「クラスをもとにインスタンスを作る」というやり方をなぜするのか、これでわかります。このやり方なら、クラスからインスタンスを無限に作成できるのです。MyObjクラスがあれば、それを元にいくらでもMyObjインスタンスを作って操作できます。作成したインスタンスの中にはそれぞれインスタンス変数があり、それぞれに値を保管できます。


■「this」について
ここで用意してあるprintDataメソッドに注目して下さい。ここでは、インスタンスのnameとageの値をテキストにまとめてからprintで出力しています。以下の文ですね。
String re = '<MyObj "' + this.name + '"(' + this.age.toString() + ')>'
ここでは、nameとageの値を利用するのに、「this.name」「this.age」といった書き方をしています。この「this」というのは何か? これは、「このインスタンス自身」を示す値なのです。

nameやageは、インスタンスごとに値が代入されます。ですから、メソッド内からその値を利用する際には、「今使っている、このインスタンスの中にあるname」を取り出さないといけません。それを行うのがthisなのです。クラスのメソッド内からインスタンス変数やメソッドを利用する際には、「this.○○」というようにして記述をします。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

void main() {
  MyObj taro = new MyObj();
  taro.name = 'Taro';
  taro.age = 35;
  taro.printData();
  MyObj hanako = new MyObj();
  hanako.name = 'Hanako';
  hanako.age = 28;
  hanako.printData();
}

class MyObj {
  String name;
  num age;
  
  void printData(){
    String re = '<MyObj "' + this.name + '"(' + this.age.toString() + ')>';
    print(re);
  }
}
※関連コンテンツ

「初心者のためのDart 2入門」に戻る