Solidity 练习:多重继承

2022-12-29 Web3 Solidity

# 一、题目说明

Solidity 支持多重继承。继承顺序很重要。您必须按照从 “最基本” 到 “最派生” 的顺序列出父合约。

# 二、任务列表

  1. 在合约 Y 中覆盖合约 X 中的 bar 函数,返回字符串 “Y”。
  2. 在合约 Z 中覆盖合约 X 和 Y 中的 bar 函数,返回字符串 “Z”。

# 三、解答代码

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

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

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

contract Y is X {
    // Overrides X.foo
    // Also declared as virtual, this function can be overridden by child contract
    function foo() public pure virtual override returns (string memory) {
        return "Y";
    }

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

// Order of inheritance - most base-lke to derived
contract Z is X, Y {
    // Overrides both X.foo and Y.foo
    function foo() public pure override(X, Y) returns (string memory) {
        return "Z";
    }

    function bar() public pure virtual override(X, Y) returns (string memory) {
        return "Z";
    }
}
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
26
27
28
29
30
31
32
33
34
35
36

# 四、参考资料

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