界面与抽象合同在坚固性上的区别 [英] difference between interface and abstract contract in solidity
本文介绍了界面与抽象合同在坚固性上的区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在学习固定性,并了解到interface
和abstract
都是可能包含未使用的函数的类。
我的疑问是:在可靠的智能合同中interface
和abstract contract
有什么区别?
推荐答案
抽象类
如果合同的功能中至少有一个没有实现,则将其标识为抽象合同。这是抽象类的唯一要求。因此,它们不能被编译。但是,它们可以用作基础合同,其他合同可以从中继承。
与其他语言不同,稳健合同不需要
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"; }
}
- AN
abstract contract
既可以有已实现的函数,也可以有未实现的函数。
接口
接口只能有未实现的功能。此外,它们既不编译也不部署。
- 接口不能实现它们的任何函数。所有接口函数都是隐式虚拟的
- 使用关键字
Interface
定义接口。 - 接口不能继承其他协定或接口,但其他协定可以从接口继承。
- 接口不能定义构造函数
- 接口不能有状态变量
- 到目前为止,接口不能定义结构和枚举,但可能很快就会更改。
这篇关于界面与抽象合同在坚固性上的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文