一、和其他高级语言一样,solidity也有继承模块。首先我们定义一个马(ma)的合约,同时定义一个骡子(luozi)的合约,contract luozi is ma的意思是说明合约骡子继承了合约马。在马合约中,我们定义了属性legs等于4,当骡子继承了马之后,可以直接调用马的属性,在下面代码中,当我们输出骡子的legs属性时,继承了父类的属性,输出4。
pragma solidity^0.5.0;
contract ma{
uint legs=4;
}
contract luozi is ma{
function getLegs()public view returns (uint){
return legs;
}
}
二、方法的继承。我们还是让合约骡子来继承合约马,在马合约中定义方法pao,会输出“benchi”,然后我们为骡子定义一个方法inheritTest,让这个方法调用pao这个方法。虽然在合约骡子中没有定义pao方法,但是由于骡子继承了马,所以还是可以输出字符串“benchi”。
需要注意的是,如图中1处所示,需要用子类来部署合约。
pragma solidity^0.5.0;
contract ma{
function pao() public pure returns(string memory){
return "benchi";
}
}
contract luozi is ma{
function inheritTest() public pure returns(string memory){
return pao();
}
}