クラスの基本 (2/7)
作成:2018-04-14 08:26
更新:2018-04-14 08:26
更新:2018-04-14 08:26
■クラスとインスタンス
では、実際にクラスを使って利用してみることにしましょう。下のリスト欄に、簡単なサンプルを掲載しておきます。
これは、MyObjという名前のクラスを作成し、利用するサンプルです。MyObjクラスを見ると、その中に以下のようなものが用意されていることがわかるでしょう。
・インスタンス変数
name――名前を保管しておくもの
age――年齢を保管しておくもの
・メソッド
printData――MyObjの内容を出力するメソッド。保管してあるnameとageの値をprintで出力する。
これらが用意されたMyObjを利用しているのがmain関数の部分です。
クラスは、そのままでは利用できません(利用できるように作られたクラスもありますが、まぁ一般的には、ということです)。では、どうするのか?というと、「インスタンス」を作成するのです。
クラスは、一種の「設計図」に相当します。変数やメソッドなどの定義が記述されているもので、それ自体を直接操作するわけではありません。実際にクラスを利用する場合は、設計図であるクラスを元に「インスタンス」という実際に操作するオブジェクトを作成するのです。これは、「new」というものを使って作成します。
こんな具合ですね。このnewによりインスタンスが作成され、それを変数などに代入します。ここでは、こんな具合にMyObjクラスのインスタンスを作成していますね。
インスタンス作成の基本はこの通りですが、実はDart2では、インスタンス作成時、newを省略できます。つまりこういうことです。
これは、MyObjという名前のクラスを作成し、利用するサンプルです。MyObjクラスを見ると、その中に以下のようなものが用意されていることがわかるでしょう。
・インスタンス変数
name――名前を保管しておくもの
age――年齢を保管しておくもの
・メソッド
printData――MyObjの内容を出力するメソッド。保管してあるnameとageの値をprintで出力する。
これらが用意されたMyObjを利用しているのがmain関数の部分です。
■newによるインスタンス作成
クラスは、そのままでは利用できません(利用できるように作られたクラスもありますが、まぁ一般的には、ということです)。では、どうするのか?というと、「インスタンス」を作成するのです。
クラスは、一種の「設計図」に相当します。変数やメソッドなどの定義が記述されているもので、それ自体を直接操作するわけではありません。実際にクラスを利用する場合は、設計図であるクラスを元に「インスタンス」という実際に操作するオブジェクトを作成するのです。これは、「new」というものを使って作成します。
変数 = new クラス ();
こんな具合ですね。このnewによりインスタンスが作成され、それを変数などに代入します。ここでは、こんな具合にMyObjクラスのインスタンスを作成していますね。
MyObj taro = new MyObj();以後は、このインスタンスが代入された変数を使ってさまざまな操作を行います。ここでは、taroとhanakoという2つのインスタンスを作って、それぞれのインスタンスを操作しています。
MyObj hanako = new MyObj();
■Dart 2ではnew不要!
インスタンス作成の基本はこの通りですが、実はDart2では、インスタンス作成時、newを省略できます。つまりこういうことです。
MyObj taro = new MyObj();このほうが更にシンプルになりますね。どちらの書き方でも動作に違いはないので、好きな書き方をすればいいでしょう。ちなみに、個人的にですが明示的にnewしたほうがコードがわかりやすくなると思うので、ここでは常にnewをつけて記述をします。
↓
MyObj taro = MyObj();
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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); } }
※関連コンテンツ