- Solidity 教程
- Solidity - 首页
- Solidity - 概述
- Solidity - 环境搭建
- Solidity - 基本语法
- Solidity - 第一个应用
- Solidity - 注释
- Solidity - 数据类型
- Solidity - 变量
- Solidity - 变量作用域
- Solidity - 运算符
- Solidity - 循环
- Solidity - 条件语句
- Solidity - 字符串
- Solidity - 数组
- Solidity - 枚举
- Solidity - 结构体
- Solidity - 映射
- Solidity - 类型转换
- Solidity - 以太币单位
- Solidity - 特殊变量
- Solidity - 样式指南
- Solidity 函数
- Solidity - 函数
- Solidity - 函数修饰符
- Solidity - View 函数
- Solidity - Pure 函数
- Solidity - 回退函数
- 函数重载
- 数学函数
- 加密函数
- Solidity 常用模式
- Solidity - 提款模式
- Solidity - 受限访问
- Solidity 高级篇
- Solidity - 合约
- Solidity - 继承
- Solidity - 构造函数
- Solidity - 抽象合约
- Solidity - 接口
- Solidity - 库
- Solidity - 汇编
- Solidity - 事件
- Solidity - 错误处理
- Solidity 有用资源
- Solidity - 快速指南
- Solidity - 有用资源
- Solidity - 讨论
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 {} }
不允许同时使用直接和间接方式初始化基类合约构造函数。
如果派生合约未向基类合约构造函数传递参数,则派生合约将成为抽象合约。
广告