- 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 - 繼承
繼承是一種擴充套件合約功能的方式。Solidity 支援單繼承和多繼承。以下是關鍵要點。
派生合約可以訪問所有非私有成員,包括內部方法和狀態變數。但不允許使用此功能。
允許函式重寫,前提是函式簽名保持不變。如果輸出引數不同,編譯將失敗。
我們可以使用 super 關鍵字或使用超類名稱來呼叫超類的函式。
在多繼承的情況下,使用 super 呼叫函式會優先考慮派生程度最高的合約。
示例
pragma solidity ^0.5.0;
contract C {
//private state variable
uint private data;
//public state variable
uint public info;
//constructor
constructor() public {
info = 10;
}
//private function
function increment(uint a) private pure returns(uint) { return a + 1; }
//public function
function updateData(uint a) public { data = a; }
function getData() public view returns(uint) { return data; }
function compute(uint a, uint b) internal pure returns (uint) { return a + b; }
}
//Derived Contract
contract E is C {
uint private result;
C private c;
constructor() public {
c = new C();
}
function getComputedResult() public {
result = compute(3, 5);
}
function getResult() public view returns(uint) { return result; }
function getData() public view returns(uint) { return c.info(); }
}
使用Solidity 第一個應用章節中提供的步驟執行以上程式。執行合約的各種方法。例如,E.getComputedResult() 後跟 E.getResult() 顯示 -
輸出
0: uint256: 8
廣告