クラスを定義してみる

いままではあらかじめ実装された(標準で組み込まれている)クラスのインスタンスを作ってきましたが、
今度はクラスを作ってみることにしましょう。

クラスの定義

クラスを定義する(新しく作る)には、「class」を使います。
「class クラス名()」と書きます。
クラスの定義
1
2
3
class CSample(){

}
このように書きます。これで定義は終わりです。
CSampleの後の()の中には、継承もとのクラス(親クラス)を指定します。
上のように省略した場合、自動でCObjectを継承します。
オブジェクト指向って何?」でも書いたとおりですが、
継承元クラスに指定したクラスの機能(メソッド、フィールド)等をすべて引き継ぎます。

あとはいつもクラスを使っているようにコンストラクタを呼び出します。
インスタンス生成
1
2
3
4
5
class CSample(){

}

obj = CSample.Create;
また、上の例では何も書いていませんが、コンストラクタを作ることも出来ます。
コンストラクタは、何かを初期化したいときなどに使います。
コンストラクタの定義には、「constructor」を使います。そのまんまですね。
コンストラクタの定義
1
2
3
4
5
6
7
8
9
class CSample(){
  constructor Make;
}

constructor CSample.Make(){
  Mes("呼ばれました");
}

obj = CSample.Make;
これでコンストラクタの定義は終わりです。
この場合、コンストラクタは「CSample.Make」で呼び出します。
継承元であるCObjectのコンストラクタである、「Create」も同時に存在します。
コンストラクタは「constructor コンストラクタ名;」と書きます。
コンストラクタに引数を渡したいときは、「constructor コンストラクタ名(引数);」です。

また、5〜7行目で「constructor CSample.Make()」というのがありますが、
2行目で書いているのは宣言で、5行目からが実際に実行される部分です。
Spinelでは、「class〜{}」の中を宣言部、それ以外で実装される部分を実行部と呼びます。
つまり、コンストラクタが呼ばれたときに実行されることは後に書くということです。
ちなみに実行部では、どのクラスのコンストラクタであるか区別するために、
コンストラクタ名の前に「クラス名.」を書きます
上の例でもちゃんと「CSample.」がついているでしょ?

次のページではメソッドの定義の仕方について説明します。

index / 次へ
プログラム言語「Spinel
Copyright © 2005 - Giemsa All Rights Reserved.
NOTES Software.