Solidity-constructors

提供:Dev Guides
移動先:案内検索

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 {}
}
  • 基本コントラクトコンストラクターを初期化する直接および間接的な方法は許可されていません。
  • 派生コントラクトが引数をベースコントラクトコンストラクターに渡さない場合、派生コントラクトは抽象になります。