|
基本構文
|
|
作者 森 章
|
|
2008年4月04日(金曜日) 06:00 |
クラス
Curlでクラスを作成するにはdefine-classを使用します。
{define-class public Person || ここにコンストラクタ、メンバ、メソッド等をコーディング } |
クラスのインスタンス化は、以下のようにします。
|
let p:Person = {Person} もしくは let p:Person = {new Person}
|
コンストラクタ
コンストラクタは、constructorを利用します。また、デフォルトコンストラクタはdefaultという名前で作成します。
|
{define-class public Person
field private _name:String
{constructor public {default name:String } set self._name = name } }
|
default以外のコンストラクタも複数作成することができます。
|
{define-class public Person
field private _name:String
{constructor public {default name:String } set self._name = name }
{constructor public {TestConstructor first-name:String, last-name:String } set self._name = first-name & " " & last-name } }
{let p1:Person = {Person "amori"}} || デフォルトコンストラクタ {let p2:Person = {Person.TestConstructor "akira", "mori"}} || コンストラクタTestConstructor
|
フィールド、ゲッター(getter)、セッター(setter)
フィールドは上記の例の中の_name:Stringのように記載します。
また、ゲッター、セッターをCurlでは定義できます。Java等ではgetName、setNameのような名前でメソッドとして定義するのが通常ですが、Curlではゲッター、セッターをsetter、getterを利用して、定義することができます。
|
{define-class public Person
field private _name:String
{getter public {name}:String {return self._name} }
{setter public {name _name:String}:void set self._name = _name }
{constructor public {default name:String } set self._name = name } }
{let p:Person = {Person "amori"}} {output p.name} || ゲッター {set p.name = "hokada"} || セッター
|
メソッド
メソッドの定義には、methodを利用します。
|
{define-class public Person
field private _name:String
{constructor public {default name:String } set self._name = name }
|| 戻り値 : Stringのメソッド {method public {toString}:String {return {format "I'm %s.", self._name}} } }
|
クラスの継承
クラスを継承するには、inheritsを利用します。また、construct-superを利用して、親クラスのコンストラクタをコールすることができます。さらに親クラスのメソッド等をコールするには、superを利用します。
|
{define-class public Member {inherits Person} || 親クラス
field _id:int
{getter public {id}:int {return self._id} }
{constructor public {default id:int, name:String } {construct-super name} } }
{let m:Member = {Member 1, "amori"}} {output m.id} {output m.name} || 親クラスのゲッター
|
また、Curlでは多重継承もサポートしております。多重継承をするには、inheritsの中に複数のクラスをカンマ区切りでコーディングします。
|
{define-class public Child {inherits Oya1, Oya2, Oya3} || 親クラス(多重継承)
|| ....... }
|
抽象クラス(abstract)
CurlではJavaのようなインターフェースはサポートされていません。ただし、抽象クラスを作成することはできます。(もちろんabstractなメソッド)これを利用するには、修飾子にabstractを指定します。
|
{define-class public abstract AbstractPerson
{method public abstract {toString}:String } }
|
アクセス属性
Curlのアクセス属性は、public、private、package、protectedを指定できます。それぞれの説明は以下のとおりです。
| public |
全コードがメソッドを呼び出すことができることを示します |
| package |
同じパッケージ内のコードのみがメソッドを呼び出すことができることを示します(デフォルト) |
| protected |
同じパッケージ内のコードまたはサブクラス内のコードのみがメソッドを呼び出すことができることを示します |
| private |
同じクラス内のコードのみがメソッドを呼び出すことができることを示します |
詳細は、こちらを参照ください。
|
|
最終更新 ( 2008年5月12日(月曜日) 13:28 )
|