Solidity

介面覆蓋

  • February 12, 2019

我有兩個契約。其中一個繼承另一個。在父契約里面我有介面

interface Token {
   function transfer(address to, uint256 value) external returns (bool);
}

我想覆蓋子契約中的一個

interface Token {
   function transfer(address to, uint256 value) external returns (bool);
   function balanceOf(address who) external view returns (uint256);
}

但編譯器顯示 DeclarationError: Identifier already declared。

有沒有辦法覆蓋介面?

根據定義,任何介面都可以被具有相同 ABI 的任何實際函式覆蓋,但不允許有 N 個介面對於某些成員相同(繼承圖不容易定義覆蓋中的優先級!)

換句話說,如果您想為第一個功能提供一個介面,則無需在新介面中重複該功能:只需收集所需的其他功能並保持第一個介面不變。

引用自:https://ethereum.stackexchange.com/questions/66985