29-Solidity8.0-继承

177 阅读1分钟

virtual 关键词 来定义这个函数是可以被重写的

override 关键词 用来覆盖之前父合约的函数

image.png

B合约继承了A合约,如果C合约继承了B合约,那么同样也继承了A合约的方法;

pragma solidity ^0.8.7;

contract A {
    function foo() public pure virtual returns (string memory) {
        return "A";
    }

    function bar() public pure virtual returns (string memory) {
        return "A";
    }

    // more code here
    function baz() public pure returns (string memory) {
        return "A";
    }
}

contract B is A {
    function foo() public pure  override returns (string memory) {
        return "B";
    }

    function bar() public pure virtual override returns (string memory) {
        return "B";
    }
    // more code
}

contract C is B {
    
    function bar() public pure override returns (string memory) {
        return "C";
    }
    // more code
}