private
only inside contract
只允许在合约内部调用
internal
only inside contract and child contracts
当为状态变量添加了inernal属性,仍然可以被继承,internal属性只能够被合约中的方法调用,不能够在外部被直接调用。
public
inside and outside contract
状态变量默认是public的类型,可以被继承,可以在外部与内部被调用
external
onlu from outside contract
状态变量没有external属性,但是函数有。
当为函数加上external属性后,意味着合约只能够在外部被调用,不能够在内部被调用。
合约内如果想要访问外部函数,可以用 this.+函数名(不建议,会消耗很多的gas)