![](/img/trans.png)
[英]What is the difference between an internal/external and public/private function in solidity?
[英]What is difference between internal and private in Solidity?
在 Solidity 中,我们有四种类型的访问。 其中两个是private
和internal
。 如果它们都可以在智能合约中使用并且它们在部署后都不可见有什么区别?
可以从子合同(但不能从外部合同)访问internal
属性。
即使从子合同也无法访问private
属性。
pragma solidity ^0.8;
contract Parent {
bool internal internalProperty;
bool private privateProperty;
}
contract Child is Parent {
function foo() external {
// ok
internalProperty = true;
// error, not visible
privateProperty = true;
}
}
您可以在文档部分Visibility and Getters中找到更多信息。
访问类型:
public
- 可以在部署合约时使用,可以在继承合约中使用
external
可以在合约部署时使用,不能在继承合约中使用
internal
- 部署合约时不能使用,可以在继承合约中使用
private
- 部署合约时不能使用,不能在继承合约中使用
internal
就像在 Java 中protected
public
:任何人都可以访问该功能private
: 只有这个智能合约可以调用这个函数internal
: 只有本智能合约和继承自它的智能合约才能调用该函数external
: 任何人都可以访问这个函数,除非这个智能合约请注意, external
使用的 gas 比public
少,因此如果您的合约未使用该功能,请优先使用external
而不是public
。
本文更多解释
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.