Solidity 中的构造函数

2025年6月2日 | 阅读 5 分钟

构造函数是一个特殊的函数,它只能在部署智能合约时调用一次。 构造函数是可选的,通常用于初始化变量。 与任何其他编程语言不同,构造函数的声明是在 Solidity 智能合约内部完成的,并在合约部署时调用。 构造函数通常用于初始化合约状态。 如果程序员未在 Solidity 合约中定义任何构造函数,则编译器会自动创建一个默认构造函数。

构造函数的必要性

构造函数在每种编程语言中都起着有用的作用,包括 Solidity 智能合约。 它允许在运行时部署参数,也可以限制方法调用。 Solidity 编程语言不支持构造函数重载,它一次只允许使用一个构造函数。

语法

示例

让我们通过一些实时的例子来理解 Solidity 中构造函数的概念。

示例 1:通过使用状态变量“val”并在构造函数中初始化“val”的值来演示 Solidity 中构造函数概念的程序。

输出

Constructor in solidity

示例 2:演示 Solidity 中构造函数概念的程序

输出

Constructor in solidity

继承中的构造函数

如果用户未在 Solidity 合约中定义任何构造函数,则会调用默认构造函数。 但是,如果父合约有一个已定义的构造函数,该构造函数接受参数,则子合约必须提供必要的参数。 如果子合约没有传递这些参数,则将被视为抽象合约。

Solidity 中有两种方法可以调用父合约的构造函数

1. 直接初始化: 让我们通过一个实时的例子来理解直接初始化的概念。 在下面的程序中,我们在 Solidity 合约中使用直接初始化来初始化父类 Base 的构造函数。

示例:显示构造函数直接初始化示例的程序。

输出

Constructor in solidity

2. 间接初始化

让我们通过一个实时的例子来理解间接初始化的概念。 在下面的程序中,使用间接初始化 Base(string(abi.encodePacked(_info, _info))) 来 初始化父类 Base 的构造函数。

示例:显示构造函数间接初始化示例的程序。

输出

Constructor in solidity

注意事项

  1. 在 Solidity 中,一个合约可以包含一个构造函数。
  2. 如果在程序中调用构造函数,则代码会在创建合约时立即执行一次。
  3. 代码运行后,最终代码将部署到区块链上。
  4. 您可以通过公共或内部状态部署合约中的构造函数。
  5. 内部构造函数总是将 Solidity 合约验证为抽象。
  6. 不要在您的合约中定义任何构造函数; 默认情况下,代码本身会在合约中声明一个构造函数。
  7. Solidity 编程语言不支持构造函数重载; 它一次只允许使用一个构造函数。