Solidity - 构造函数



构造函数是一个使用constructor关键字声明的特殊函数。它是一个可选函数,用于初始化合约的状态变量。以下是构造函数的关键特性。

  • 一个合约只能有一个构造函数。

  • 构造函数代码在创建合约时执行一次,用于初始化合约状态。

  • 构造函数代码执行后,最终代码将部署到区块链。此代码包括公共函数和可通过公共函数访问的代码。构造函数代码或仅由构造函数使用的任何内部方法不包含在最终代码中。

  • 构造函数可以是公共的或内部的。

  • 内部构造函数将合约标记为抽象合约。

  • 如果没有定义构造函数,则合约中存在一个默认构造函数。

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 {}
}
  • 不允许同时使用直接和间接方式初始化基类合约构造函数。

  • 如果派生合约未向基类合约构造函数传递参数,则派生合约将成为抽象合约。

广告