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

Super

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

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

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

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

  1. クラスコンストレクター内で Super を使う例です。 クラスコンストレクター内で Super を使う例です。 RectangleSquare クラス の共通要素がコンストラクター内で重複しないよう、このコマンドを呼び出します。 クラスコンストレクター内で Super を使う例です。 RectangleSquare クラス の共通要素がコンストラクター内で重複しないよう、このコマンドを呼び出します。 クラスコンストレクター内で Super を使う例です。 RectangleSquare クラス の共通要素がコンストラクター内で重複しないよう、このコマンドを呼び出します。 コンストラクターコード において、Super コマンドを使用すると、そのスーパークラスのコンストラクターを呼び出すことができます。 コンストラクター内でで使用する際には、Super コマンドは単独で使用され、またThis キーワードよりも先に使用される必要があります。 引数 引数 引数 引数 コンストラクターコード において、Super コマンドを使用すると、そのスーパークラスのコンストラクターを呼び出すことができます。 コンストラクター内でで使用する際には、Super コマンドは単独で使用され、またThis キーワードよりも先に使用される必要があります。 引数 引数 引数 引数 コンストラクターコード において、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 クラス の共通要素がコンストラクター内で重複しないよう、このコマンドを呼び出します。 クラスコンストレクター内で Super を使う例です。 RectangleSquare クラス の共通要素がコンストラクター内で重複しないよう、このコマンドを呼び出します。 クラスコンストレクター内で 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"

参照

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

プロパティ

コマンド番号1706
スレッドセーフ&amp;amp;amp;amp;amp;amp;amp;amp;check;