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 {}
}
  • 基本コントラクトコンストラクターを初期化する直接および間接の方法は許可されていません。

  • 派生コントラクトが基本コントラクトコンストラクターに引数を渡していない場合、派生コントラクトは抽象になります。