Solidity基础教程:合约的继承与方法的重写
合约继承
合约继承使用is
关键字
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
...
function balanceOf(address owner) public view virtual override returns (uint256) {
require(owner != address(0), "ERC721: balance query for the zero address");
return _balances[owner];
}
...
}
方法重写
方法重写的前提就是当前合约继承其他合约,并且其他合约中的某个需要被重写的方法标注为virtual
。例如下面这个@openzippelin/contracts
库的,ERC721
合约实现中的balanceOf
方法。
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
...
function balanceOf(address owner) public view virtual override returns (uint256) {
require(owner != address(0), "ERC721: balance query for the zero address");