Solidity 中的 internal 和 private 有什么区别?
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
- 部署合约时不能使用,不能在继承的合约中使用
在 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
- 部署合约时不能使用,不能在继承的合约中使用