Appearance
访问权限
Solidity
提供了四种访问权限:public
、private
、internal
和 external
。
这些权限可以用来限制函数和状态变量的访问。以下是每种权限的解释和编程演示。
public
可以在合约内外访问。默认情况下,所有函数和状态变量都是 public
。
solidity
pragma solidity ^0.8.0;
contract Example {
uint public count; // public状态变量
function increment() public {
count++;
}
}
private
只能在当前合约中访问。无法在派生合约或外部访问。
solidity
pragma solidity ^0.8.0;
contract Example {
uint private count; // private状态变量
function increment() public {
count++;
}
function getCount() public view returns (uint) {
return count; // 仅限于在合约内部访问
}
}
internal
只能在当前合约内和派生合约中访问。不能在外部访问。
solidity
pragma solidity ^0.8.0;
contract Example {
uint internal count; // internal状态变量
function increment() internal {
count++;
}
function getCount() public view returns (uint) {
return count; // 仅限于在合约内部和派生合约中访问
}
}
contract Example2 is Example {
function incrementCount() public {
increment(); // 可以在合约内和派生合约中访问
}
}
external
只能在合约外部调用,不能在合约内部访问。
solidity
pragma solidity ^0.8.0;
contract Example {
uint public count;
function increment() public {
count++;
}
function getCount() external view returns (uint) {
return count; // 仅限于在合约外部调用
}
}
总的来说,访问权限是用来控制合约的接口和功能暴露给外部的程度。
比如,公开的接口意味着接口是所有人都可以访问和调用的,而私有的接口是只有在合约内部才能访问和调用。