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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25