在 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();
    }
}

14.Interface

有任何問題可反饋: [email protected]