Solidity 中接口和抽象契约的区别

aak*_*dev 7 blockchain ethereum solidity smartcontracts decentralized-applications

我正在学习 Solidity,并且知道interfaceabstract都是可能包含未使用的函数的类。我的疑问是: Solidity 智能合约interface和Solidity 智能合约有什么区别?abstract contract

Pet*_*jda 7

它与大多数其他面向对象的编程语言相同:

  • 接口仅声明函数。无法实施它们。
  • 抽象类可以声明函数(与接口相同)并实现它们。
  • 两者都无法实例化,需要实现/继承。

例子:

interface IMyContract {
    // can declare, cannot implement
    function foo() external returns (bool);
}
Run Code Online (Sandbox Code Playgroud)
abstract contract MyContract {
    // can declare
    function foo() virtual external returns (bool);

    // can implement
    function hello() external pure returns (uint8) {
        return 1;
    }
}
Run Code Online (Sandbox Code Playgroud)