ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Super
|
Super {( param {; param2 ; ... ; paramN} )} -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
param | Mixed |
![]() |
親コンストラクターに渡す引数 | |||||
戻り値 | オブジェクト |
![]() |
オブジェクトの親 | |||||
Super コマンドは、スーパークラスへの呼び出しを行います。
Super は二つの目的のために導入されました:
// myClass コンストラクター内
C_TEXT($1;$2)
Super($1) //テキスト引数でスーパークラスコンストラクターを呼び出す
This.param:=$2 // 二つ目の引数を使用する
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" が格納される
プロダクト: 4D
テーマ: ランゲージ
番号:
1706
初出: 4D v18 R3
ランゲージリファレンス ( 4D v20 R7)