メソッドの定義を、 クラスや、そのセレクターや、 フィールドや、 インスタンス変数、 の定義とは別に行う、 つまり、 実装を定義から分離することもできます。 これは以下の方法で行うことができます:
graphical class inst-value radius end-class circle ... \ do some other stuff circle methods \ now we are ready m: ( x y circle -- ) radius draw-circle ;m overrides draw m: ( n-radius circle -- ) [to-inst] radius ;m overrides construct end-methods
複数の methods
...end-methods
セクションを使用できます。
これらのセクションでクラスに対して実行できることは、 メソッドの定義とクラスのセレクターのオーバーライドのみです。
新しいセレクターやフィールドを定義してはいけません。
注意: 多くの場合、 セレクターを使用する前にオーバーライドする必要があることに注意してください。 特に、 heap-new
とその他のメソッドを呼び出す前に、 通常は construct
を新しいメソッドでオーバーライドする必要があります。 たとえば、
上記例の overrides construction
シーケンスの前に circle を作成してはなりません。