ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v20 R7
Super

Super 


 

Super {( param {; param2 ; ... ; paramN} )} -> 戻り値 
引数   説明
param  Mixed in 親コンストラクターに渡す引数
戻り値  オブジェクト in オブジェクトの親

説明   

Super コマンドは、スーパークラスへの呼び出しを行います。

Super は二つの目的のために導入されました:

  • コンストラクターコード内においては、Super はスーパークラスのコンストラクターを呼び出すためのコマンドです。コンストラクター内で使用された場合、Super コマンドは単独で使用され、This キーワードが使用される前に使用されていなければなりません。
    • 継承ツリー内の全てのクラスコンストラクターが適切に呼ばれていないと、エラー-10748 が生成されます。4Dデベロッパーは全ての呼び出しが有効かどうかを検証する責務があります。
    • This コマンドが、まだスーパークラスがコンストラクトされていないオブジェクトに対して呼び出された場合、エラー-10743 が生成されます。
    • Super がオブジェクトスコープ外から呼び出された場合、またはスーパークラスのコンストラクターが既に呼び出されているオブジェクトに対して呼び出された場合、エラー-10746 が生成されます。

  // myClass コンストラクター内
 C_TEXT($1;$2)
 Super($1//テキスト引数でスーパークラスコンストラクターを呼び出す
 This.param:=$2 // 二つ目の引数を使用する

  • クラスメンバーファンクション内においては、Super はスーパークラスのプロトタイプを指定し、スーパークラス階層のファンクションを呼び出すことを可能にします。

 Super.doSomething(42) //スーパークラス内で宣言された"doSomething" ファンクションを呼び出す

以下の例題はクラスコンストラクター内部のSuper の使用例を紹介しています。このコマンドは、Rectangle クラスとSquare クラスで共通しているコンストラクター部分の重複を避けるために呼び出されています。

  //Class: Rectangle
 
 Class constructor
 C_LONGINT($1;$2)
 This.name:="Rectangle"
 This.height:=$1
 This.width:=$2
 
 Function sayName
 ALERT("Hi, I am a "+This.name+".")
 
 Function getArea
 C_LONGINT($0)
 $0:=This.height*This.width

 

  //Class: Square
 
 Class extends Rectangle
 
 Class constructor
 C_LONGINT($1)
 
  // Rectangle の幅と高さとして提供された長さで
  // 親クラスコンストラクターを呼び出す
 Super($1;$1)
 
  // 派生したクラスにおいては、
  // Super は'This' を使用する前に呼び出されていなければならない
 This.name:="Square"

 

以下の例ではクラスメンバーメソッド内においてのSuper の使用法を紹介しています。

ファンクションを持ったRectangle クラスを作成した場合を考えます:

  //Class: Rectangle
 
 Function nbSides
 C_TEXT($0)
 $0:="I have 4 sides"

また、スーパークラスファンクションを呼び出すファンクションを持つSquare クラスを作成したとします:

  //Class: Square
 
 Class extends Rectangle
 
 Function description
 C_TEXT($0)
 $0:=Super.nbSides()+" which are all equal"

その後、プロジェクトメソッド内において以下のように書くことができます:

 C_OBJECT($square)
 C_TEXT($message)
 $square:=cs.Square.new()
 $message:=$square.description() // "I have 4 sides which are all equal" が格納される



参照 

cs
This

 
プロパティ 

プロダクト: 4D
テーマ: ランゲージ
番号: 1706

This command can be run in preemptive processes

 
ページの目次 
 
履歴 

初出: 4D v18 R3

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v20 R7)