Tadotter - Eclipse RCP版 (1.1.2.v20090921) | 2009-09-21 15:19 |
Tadotter - JavaFX版 (2.0.1) | 2009-07-06 11:19 |
図 5.3. メンバ変数
関数定義 | 変数宣言 | override変数宣言 | initブロック | postinitブロック
関数定義と変数宣言はそれぞれの章で取り上げます。残りのメンバ変数は以下で取り上げます。
図 5.4. initブロック
'init' ブロック
initブロックは任意のブロックで、インスタンスの初期化の最終段階で実行されます。
図 5.5. postinitブロック
'postinit' ブロック
postinitブロックは任意のブロックで、インスタンスの初期化が完全に終わった後で実行されます。
図 5.6. override変数宣言
'override' 'var' 変数名 ['=' 初期化式] [onReplrace句]
override変数宣言は、サブクラスのインスタンスのvarのデフォルト値の変更または、 varのon replace句を追加します。 初期化式とon replace句のいずれか、あるいは両方が使われなければなりません。 初期化式がデフォルト値をオーバーライドし、さらに、on replace句は変更時に実行されるブロックを追加します。 サブクラスに定義されたどんなon replace句もその変数の変更時に実行されます。 これはサブクラスの不変式を管理する上で重要です。
あなたはoverride修飾子を使って、関数をオーバーライドすることにより、サブクラスでインスタンス関数の定義を変更することができます。
ここにサブクラスSubで関数greetingの定義をオーバーライドします。
class Base { function greeting() : Void { println("Hi") } } class Sub extends Base { override function greeting() : Void { println("Howdy") } } def b = Base {}; def s = Sub {}; b.greeting(); s.greeting();
印字結果:
Hi Howdy
Javaのメソッドもオーバーライドすることができ、例えば、 オーバーライド可能なtoString()メソッドでオブジェクトが印字されるように変更するには
class Point { var x : Number; var y : Number; override function toString() : String { "Point {x}, {y}" } } def p = Point {x: 4.6 y: 8.9 }; println( p );
印字結果:
Point 4.6, 8.9
[PageInfo]
LastUpdate: 2009-07-26 17:13:14, ModifiedBy: happyhills
[Permissions]
view:all, edit:login users, delete/config:members