solidity 学习笔记(3) 函数修饰符/继承
修饰符:
函数修饰符有 constant view pure
其中 constant和view的功能是一样的 不会消耗gas 也就是说不会做任何存储 constant在5.0以后的版本中被废弃
pure则更严格一点 不会消耗gas 也不会使用函数的变量
继承:
合约之间的继承是通过 is 来实现的:
contract father{
uint public money = 1000;
}
contract son is father{ //son 继承 father
function geyMoney() public view returns (uint){
return money; //继承父亲的方法
}
}
可见性:
public与private
对于public
和private
,相信学过其他主流语言的人都能明白:
public
修饰的变量和函数,任何用户或者合约都能调用和访问。private
修饰的变量和函数,只能在其所在的合约中调用和访问,即使是其子合约也没有权限访问。
external和internal
除 public
和 private
属性之外,Solidity 还使用了另外两个描述函数可见性的修饰词:internal
(内部) 和 external
(外部)。 external函数被继承的时候,需要使用 this.functionName()来在内部调用
internal
和private
类似,不过, 如果某个合约继承自其父合约,这个合约即可以访问父合约中定义的“内部”函数。external
与public
类似,只不过这些函数只能在合约之外调用 - 它们不能被合约内的其他函数调用。