【问题标题】:What is difference between internal and private in Solidity?Solidity 中的内部和私有有什么区别?
【发布时间】:2021-11-18 12:38:11
【问题描述】:

在 Solidity 中,我们有四种访问方式。其中两个是privateinternal。 如果两者都可以在智能合约内部使用,并且部署后两者都不可见,有什么区别?

【问题讨论】:

    标签: blockchain solidity smartcontracts


    【解决方案1】:

    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 中找到更多信息。

    【讨论】:

      【解决方案2】:

      访问类型:

      public - 可以在合约部署时使用,也可以在继承合约中使用

      external可以在合约部署时使用,不能在继承合约中使用

      internal - 部署合约时不能使用,可以在继承合约中使用

      private - 部署合约时不能使用,不能在继承合约中使用

      【讨论】:

        猜你喜欢
        • 2018-05-17
        • 2011-08-27
        • 2012-06-13
        • 1970-01-01
        • 2018-03-17
        • 2022-10-24
        • 2017-02-10
        • 1970-01-01
        • 2020-06-17
        相关资源
        最近更新 更多