- 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 {}
}
不允許同時使用直接和間接方式初始化基類合約建構函式。
如果派生合約未向基類合約建構函式傳遞引數,則派生合約將成為抽象合約。
廣告