昨天聊過 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 的用法其實是很像的。 大家可以比較看看。