Solidity 练习:多重继承
睡不醒的鲤鱼 2022-12-29 Web3 Solidity
# 一、题目说明
Solidity 支持多重继承。继承顺序很重要。您必须按照从 “最基本” 到 “最派生” 的顺序列出父合约。
# 二、任务列表
- 在合约 Y 中覆盖合约 X 中的 bar 函数,返回字符串 “Y”。
- 在合约 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
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