扩展篇
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 (<