源码:
pragma solidity ^0.8.7;
//order of inheritance - most base-lke to derived
/*
X
/ |
Y |
\ |
Z
*/
//order of most base like to derived
// X, Y, Z
/*
X
/ \
Y A
| |
| B
\ /
Z
X, Y, A, B, Z
*/
contract X {
function foo() public pure virtual returns (string memory) {
return "X";
}
function bar() public pure virtual returns (string memory) {
return "X";
}
function x() public pure virtual returns (string memory) {
return "X";
}
}
contract Y is X {
function foo() public pure virtual override returns (string memory) {
return "Y";
}
function bar() public pure virtual override returns (string memory) {
return "Y";
}
function x() public pure virtual override returns (string memory) {
return "Y";
}
}
contract Z is X, Y {
function foo() public pure override(X, Y) returns (string memory) {
return "X";
}
function bar() public pure override(X, Y) returns (string memory) {
return "X";
}
function x() public pure override(X, Y) returns (string memory) {
return "X";
}
}