Solidity 练习:继承-覆盖

2022-12-29 Web3 Solidity

# 一、题目说明

合约可以通过 is 关键字继承另一个合约。

可以被子合约覆盖的函数必须声明 virtual。重写父函数必须声明 override。

# 二、任务列表

  • 在合约 B 中创建一个 bar 函数,用于重写合约 A 中的 bar 函数,返回字符串 “B”。

# 三、解答代码

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract A {
    // foo() can be overridden by child contract
    function foo() public pure virtual returns (string memory) {
        return "A";
    }

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

// Inherit other contracts by using the keyword 'is'.
contract B is A {
    // Overrides A.foo()
    function foo() public pure override returns (string memory) {
        return "B";
    }

    function bar() public pure override returns (string memory) {
        return "B";
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 四、参考资料

Last Updated: 2023-01-28 4:31:25