solidity快速入门(扩展篇)

本文是Solidity的扩展篇,详细介绍了继承、多态、super和C3线性化概念,讲解了throw、require、assert、revert的使用差异,以及call、callcode、delegatecall在合约间调用的不同。此外,还探讨了storage、memory、stack的内存管理,以及library和using for的智能合约优化技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

扩展篇

1.继承、多态、super 与 C3 线性化

solidity支持继承,并且支持多重继承。

下面的代码展示了基本的继承的作用:代码重用。

contract ERC20Token{
   
   
    string public name;
    string public symbol;
    uint256 public decimals;
	uint256 public totalSupply;
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;

	event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
    
    //基类里可以不给实现,只做函数声明。也可给一个实现,子类根据情况,选择直接使用用或者重新写一个实现覆盖父类的
    function transfer(address _to, uint256 _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
    function approve(address _spender, uint256 _value)public returns (bool success);
}

contract TokenA is ERC20Token {
   
   
	function MyToken(string _name, string _symbol, uint256 _decimals) public{
   
   
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
    }
    //如果父类只声明了该方法,此处为实现。若父类实现了,此处会覆盖父类的实现。
    function transfer(address _to, uint256 _value) public returns (<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值