メインコンテンツまでスキップ
バージョン: 20 R7 BETA

Super

Super( ...param : any )
Super : Object

引数説明
paramany->親コンストラクターに受け渡す引数
戻り値Object<-親オブジェクト

Super キーワードによって、スーパークラス (親クラス) を呼び出すことができます。

Super は次の 2つの目的のために使います:

  1. コンストラクターコード において、Super コマンドを使用すると、そのスーパークラスのコンストラクターを呼び出すことができます。 コンストラクター内でで使用する際には、Super コマンドは単独で使用され、またThis キーワードよりも先に使用される必要があります。 引数 引数
  • 継承ツリーにおいて、すべてのクラスコンストラクターが正しく呼び出されていない場合には、エラー -10748 が生成されます。 呼び出しが有効であることを確認するのは、開発者の役目となります。
  • スーパークラスがコンストラクトされるより先に、This コマンドを使った場合には、エラー -10743 が生成されます。
  • オブジェクトのスコープ外で Super を呼び出した場合、または、スーパークラスコンストラクターがすでに呼び出されたオブジェクトを対象に呼び出した場合には、エラー -10746 が生成されます。
// myClass コンストラクター
var $text1; $text2 : Text
Super($text1) // テキスト型引数をスーパークラスコンストラクターに渡します
This.param:=$text2 // 2番目の引数を使用します
  1. クラス関数 内において、Superスーパークラス のプロトタイプを指し、スーパークラス階層の関数の呼び出しを可能にします。
Super.doSomething(42) // スーパークラスにて宣言されている
// "doSomething" メンバーメソッドを呼び出します

例題 1

クラスコンストレクター内で Super を使う例です。 クラスコンストレクター内で Super を使う例です。 RectangleSquare クラス の共通要素がコンストラクター内で重複しないよう、このコマンドを呼び出します。

// Class: Rectangle
Class constructor($width : Integer; $height : Integer)
This.name:="Rectangle"
This.height:=$height
This.width:=$width


Function sayName()
ALERT("Hi, I am a "+This.name+".")

// 関数定義
Function getArea() : Integer

return (This.height)*(This.width)
//Class: Square

Class extends Rectangle

Class constructor ($side : Integer)

// これは親クラスのコンストラクターに長さという引数を渡して呼び出します
// 渡された長さはRectangle の幅と高さとして渡されます。
Super($side;$side)
// 継承クラスにおいては、Super は必ず
// 'This'を使用する前に呼び出さなければなりません。
This.name:="Square"

Function getArea() : Integer
return This.height*This.width

例題 2

参照 メンバーメソッドを持つ Rectangle クラスを作成します:

//Class: Rectangle

Function nbSides() : Text
return "I have 4 sides"

Square クラスには、スーパークラスメソッドを呼び出すメンバーメソッドを定義します:

//Class: Square

Class extends Rectangle

Function description() : Text
return Super.nbSides()+" which are all equal"

この場合、プロジェクトメソッド内には次のように書けます:

var $square : Object
var $message : Text
$square:=cs.Square.new()
$message:=$square.description() // "I have 4 sides which are all equal"

参照

クラスのコンセプトページ.