【Solidity】public internal private external 方法修饰符

  • public:在任何地方都能调用
  • internal:只有内部或子contact才能调用
  • private:只有内部才能调用
  • external:只有外部才能调用,合约本身也不能调用
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract PublicPrivateInternalExternalExample{
    
    uint private age = 10;
    
    //任何地方都可以调用该方法
    function getAgeWithPublic() public view returns(uint){
        return age;
    }
    //只能在该合约类里调用该方法
    function getAgeWithPrivate() private view returns(uint){
        return age;
    }
    //只能在该合约类里或继承该类的子类能调用该方法
    function getAgeWithInternal() internal view returns(uint){
        return age;
    }
    //只能外部调用该方法,通常是以接口的形式供外部调用
    function getAgeWithExternal() external view returns(uint){
        return age;
    }
    
    function callFunction() public view returns(uint){
        return getAgeWithPrivate();
    }
}

Loading

Facebook评论