31继承
一个合约可以继承另一个合约
要在父合约中标记哪些function是可以重写的virtual
在子合约中标记哪些function是重写的override
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
//父合约
// 要在父合约中标记哪些function是可以重写的virtual
contract A{
function foo() public pure virtual returns (string memory){
return "A";
}
function bar() public pure virtual returns (string memory){
return "A";
}
function baz() public pure returns (string memory){
return "A";
}
}
// 子合约
contract B is A{
function foo() public pure override returns (string memory){
return "B";
}
function bar() public pure override returns (string memory){
return "B";
}
}
此时有C合约,继承B合约
C合约重写B合约中的foo方法,B合约中的foo要标注上virtual
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
//父合约
// 要在父合约中标记哪些function是可以重写的virtual
contract A{
function foo() public pure virtual returns (string memory){
return "A";
}
function bar() public pure virtual returns (string memory){
return "A";
}
function baz() public pure virtual returns (string memory){
return "A";
}
}
// 子合约
contract B is A{
function foo() public pure virtual override returns (string memory){
return "B";
}
function bar() public pure override returns (string memory){
return "B";
}
}
contract C is B{
function foo() public pure override returns (string memory){
return "C";
}
}