就像Java、C++中,类的继承一样,Solidity中,合约继承是扩展合约功能的一种方式。Solidity支持单继承和多继承。Solidity中,合约继承的重要特点:
派生合约可以访问父合约的所有非私有成员,包括内部方法和状态变量。但是不允许使用
this
。- 如果函数签名保持不变,则允许函数重写。如果输出参数不同,编译将失败。
- 可以使用
super
关键字或父合同名称调用父合同的函数。 - 在多重继承的情况下,使用
super
的父合约函数调用,优先选择被最多继承的合约。
示例
1 | pragma solidity ^0.5.0; |
附言
基础学习资料
- Solidity中文文档:https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#
- ERC20:https://learnblockchain.cn/2018/01/12/create_token/
- ERC721:https://learnblockchain.cn/2018/03/23/token-erc721/
- cryptozombies游戏:https://cryptozombies.io/zh
- 学习列表:https://github.com/yippee-ki-yay/eth-dev-reading-list
- 语法基础:https://www.tryblockchain.org/solidity-libraries-%E5%BA%93.html
- https://www.qikegu.com/docs/4991
与智能合约交互
- ethers.js:https://learnblockchain.cn/docs/ethers.js/
- web3js:
源码
示例项目
- https://solidity-by-example.org/
- https://github.com/raineorshine/solidity-by-example
- https://github.com/cyrusadkisson/solidity-baby-steps
- https://github.com/flashbots/simple-arbitrage