昨天聊過 abstract constract,今天來聊聊 interfaces。

在 OOP 語言裡面很重要的一個東西 interfaces,在 solidity 也有提供相同的功能。下面來看看範例

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.6.2 <0.9.0;

interface A {
    function test() external returns (uint256);
}

在 interface 中一樣可以有繼承的概念,範例如下

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.3;

interface A {
    function test() external returns (uint256);
}

interface B {
    function test() external returns (uint256);
}

interface C is A, B {
    function test() external override(A, B) returns (uint256);
}

如何在 constract 實現 interface

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
// 這是抽象合約
interface A {
    function Name() external returns (string memory);
}
contract B is A {
    function Name() public pure returns (string memory) {
        return "B";
    }
}

其實從上述範例中看到,其實跟 abstract contract 跟 interface 的用法其實是很像的。 大家可以比較看看。