32多线继承
inheritance顺序:
从积累到派生之间的关系
继承更少的合约放在更前面
更加接近于基础的写前面
eg1:
X
/ |
Y |
\ |
Z
order: X, Y,Z
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
contract X{
function foo() public pure virtual returns (string memory){
return "X";
}
function bar() public pure virtual returns (string memory){
return "X";
}
function baz() 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 y() public pure returns (string memory){
return "Y";
}
}
//X,Y继承顺序很重要
contract Z is X,Y{
function foo() public pure override(X,Y) returns (string memory){
return "Z";
}
function bar() public pure override(Y,X) returns (string memory){
return "Z";
}
}
eg2:
X
/ \
Y A
| |
| B
\ |
Z
order: X,Y,A,B,Z
(YA同级)