界面与抽象合同在坚固性上的区别坚固、抽象、界面、区别

2023-09-03 08:53:15 作者:荷尔蒙打造非凡液体

我正在学习固定性,并了解到interfaceabstract都是可能包含未使用的函数的类。 我的疑问是:在可靠的智能合同中interfaceabstract contract有什么区别?

推荐答案

抽象类

如果合同的功能中至少有一个没有实现,则将其标识为抽象合同。这是抽象类的唯一要求。因此,它们不能被编译。但是,它们可以用作基础合同,其他合同可以从中继承。

在PDF文件内新增页面内容的方法

与其他语言不同,稳健合同不需要abstract关键字即可标记为摘要。相反,任何至少有一个未实现功能的合同都被视为坚固性的抽象。除非抽象合同具有正在执行的合同,否则它既不能编译也不能部署

contract MyAbstractContract {
  function myAbstractFunction() public pure returns (string);
}

如果约定继承抽象约定,并且未实现所有未实现的功能,则该约定也将被视为抽象

 //MyContract is also abstract
  contract MyContract is MyAbstractContract {
      function myAbstractFunction() public pure returns (string)
 }

但这不是抽象的,因为我们正在实现该函数。

contract MyContract is MyAbstractContract {
        function myAbstractFunction() public pure returns (string)
         { return "string value to return"; }
    }
ANabstract contract既可以有已实现的函数,也可以有未实现的函数。

接口

接口只能有未实现的功能。此外,它们既不编译也不部署。

接口不能实现它们的任何函数。所有接口函数都是隐式虚拟的 使用关键字Interface定义接口。 接口不能继承其他协定或接口,但其他协定可以从接口继承。 接口不能定义构造函数 接口不能有状态变量 到目前为止,接口不能定义结构和枚举,但可能很快就会更改。