在 solidity 裡面也有繼承的概念,寫法是使用 is,我們來看一下寫法:
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
// 父類別
contract A {
function getName() public pure virtual returns (string memory) {
return "A";
}
}
// B 繼承 A
contract B is A {
function getAName() public pure returns (string memory) {
return super.getName();
}
// 要複寫 父類別的 function 可加上 override
function getName() public pure virtual override returns (string memory) {
return "B";
}
}
contract C is A {
function getCName() public pure returns (string memory) {
return super.getName();
}
function getName() public pure virtual override returns (string memory) {
return "C";
}
}
// 多繼承
contract BC is B, C {
function getBCName() public pure returns (string memory) {
return "BC";
}
// 這部分如果複寫使用super 會由左到右抓最後一個的
function getName() public pure override(B, C) returns (string memory) {
return super.getName();
}
}
有任何問題可反饋: [email protected]