| 4D v20.1Super | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v20.1
 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)
	
	
	ランゲージリファレンス ( 4D v20.1)
	
	
	
 コメントを追加
コメントを追加