Solidity-コンストラクター
コンストラクターは、を使用して宣言された特別な関数です。 constructorキーワード。これはオプションの機能であり、コントラクトの状態変数を初期化するために使用されます。コンストラクターの主な特徴は次のとおりです。
コントラクトはコンストラクターを1つだけ持つことができます。
コンストラクタコードは、コントラクトの作成時に1回実行され、コントラクトの状態を初期化するために使用されます。
コンストラクターコードが実行された後、最終的なコードがブロックチェーンにデプロイされます。このコードには、パブリック関数とパブリック関数を介して到達可能なコードが含まれます。コンストラクターコードまたはコンストラクターのみが使用する内部メソッドは、最終的なコードには含まれません。
コンストラクターは、パブリックまたは内部のいずれかです。
内部コンストラクターは、コントラクトを抽象としてマークします。
コンストラクターが定義されていない場合、デフォルトのコンストラクターがコントラクトに存在します。
pragma solidity ^0.5.0;
contract Test {
constructor() public {}
}
基本コントラクトに引数付きのコンストラクターがある場合、派生した各コントラクトはそれらを渡す必要があります。
基本コンストラクターは、次の方法を使用して直接初期化できます-
pragma solidity ^0.5.0;
contract Base {
uint data;
constructor(uint _data) public {
data = _data;
}
}
contract Derived is Base (5) {
constructor() public {}
}
基本コンストラクターは、次の方法を使用して間接的に初期化できます。
pragma solidity ^0.5.0;
contract Base {
uint data;
constructor(uint _data) public {
data = _data;
}
}
contract Derived is Base {
constructor(uint _info) Base(_info * _info) public {}
}
基本コントラクトコンストラクターを初期化する直接および間接の方法は許可されていません。
派生コントラクトが基本コントラクトコンストラクターに引数を渡していない場合、派生コントラクトは抽象になります。