讲一下 solidity 的继承。
继承的合约可以访问所有非 private 的成员。
external- 外部访问
public- 内外均可访问
internal- 内部以及继承访问
private
is 表示继承,通过复制代码的方式来继承。
1 | pragma solidity ^0.4.18; |
多重继承
is 后面接多个合约,基类合约在 is 后面的顺序很重要。
继承顺序的原则是底层到派生。
1 | contract X{} |
抽象合约
- 合约存在没有函数体的函数
- 合约不能通过编译,只能被继承
1 | contract abstact{ |
如果合约内,存在没有函数体的函数,则认为是抽象合约,不能编译,只能继承。
接口
- 所有函数都没有函数体
- 函数不能继承其他合约,如接口
- 不能定义构造器、变量、结构体、枚举类
1 | interface test{ |