zoukankan      html  css  js  c++  java
  • Solidity属性和方法的访问权限

    属性默认是internal的类型,外部是不可以访问调用的,如果加上public的话,那么是会自动为这个属性加上一个get的方法的,比如uint   public _age; => function _age() {} 自动生成

    方法:默认是public的类型,外部是可以直接访问调用的

    public:,不管是属性还是方法都可以通过合约地址的形式来进行访问,this.xxxxx()的形式,public属性:_age(),public方法:tets2()
    internal,private:,就不用加this,直接访问,如果是属性的话,就直接属性age就可以了,如果是方法的话,那么就test2()就可以了,不用加this,指针的形式来访问(合约地址的形式)

    pragma  solidity  ^0.4.4;
    
      //internal默认是合约内部的访问权限
      //internl和private外部都是不能访问的
      uint  _age;//现在外部是访问这个_age的,默认的是internal,内部访问
      uint  public _weight;//这个会自动生成一个get函数,public,可以被调用,在页面可以看到_weight方法(实际上是一个get方法)
    
    
    // public,当属性的类型是public的时候,会生成一个和属性名相同的并且返回值就是当前属性的get函数
    
    
      //下面的方法把上面public自动生成的get函数给覆盖掉了
      function   _weight()  constant returns(uint){
          return   111;//返回的是状态变量,调用_weight返回的是111
      }
    }
    //如果想用合约的指针去访问的话,只能是public的类型
    pragma   solidity  ^0.4.13;
    
    contract  Person {
    
      uint  _age;//默认是internal的类型
      uint  public _weight;//会自动生成一个_weight的get函数
      uint  private _money;
      function test() constant  public  returns (uint) {
    
        return  _age;
      }
    
      function  test2()  constant  internal  returns(uint){
        return   _age;
      }
      function   get()   contract  returns(uint) {
        this._weight();//_weight会自动生成一个_weight的get函数,所以是可以通过this来进行访问的,但是_money是private的类型,所以是不能通过这个this指针的形式来进行访问的,否则会报错
        return  this.test();//因为test方法是public的类型,所以是可以访问调用的
        //this就是当前的合约地址,如果是internal的类型的话,不能通过this来进行访问
        //如果要访问internal的方法类型的时候,直接把this去掉,就是test()()
      }
    
      function  get2()   constant  returns(uint){
        return   test2();//tets2是internal的方法类型,所以是不用加上this直接进行访问的
        //注明:如果是intrnal,private的类型的时候,是不可以通过指针进行访问的,在合约内部访问都会报错,加指针的话
      }
    }

     

    属性默认是internal的类型,是不会自动生成属性的get函数的,如果是public的话,那么会自动生成这个属性的get函数,可以被调用

    方法默认是public的类型

    如果内部访问public的类型,不管是方法还是属性的话,可以通过this.xx(),的形式(合约地址的形式)来访问,如果是internal,private是不可以通过这种方式来访问的,直接属性,或者方法()就可以访问

  • 相关阅读:
    【摘录】使用实体框架、Dapper和Chain的仓储模式实现策略
    关于微软HttpClient使用,避免踩坑
    在网上摘录一段对于IOC的解析,比较直观,大家观摩观摩
    经历招聘中面试求职的点滴
    在面试中忽然发现DateTime的一些...
    GCC的内存边界对齐
    如何删除Weblogic域
    电蚊拍选购参考
    Localizing WPF with .resx files
    C#操作串口总结
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/10663963.html
Copyright © 2011-2022 走看看