solidity 中的函数的可见性与继承


函数的可见性

publicpublic
可以任意调用。 内部: func() this.func() ,外部: contract.func()
external
可以通过内部函数和外部函数的方式进行调用。但是标记了 external 的函数,在函数内部只能以 this.func() 的方式嗲用,不能直接 func() 调用
internal
只能在合约内部或者继承合约里调用。 可以func() ,不可以 this.func() , 不可以外部调用
private
只能在合约内部调用,不能被继承合约调用,不能被this.func() 调用。只可以 func();

函数的继承

virtual
标记此函数可以被重写。只有标记为virtual的函数才可以重写
override
重写 virtual 标记的函数

solidity 中的数据存储

calldata
作用类似于 memory , 但是是只读的。所以如果有情况可用 calldata 和 memory,使用calldata更好。
memory
存储于内存中,仅在函数调用期间生效
storage
持久的存储于链上