Solidify实现一个智能合约2(属性和行为的访问权限)

属性的访问权限

属性:状态变量

属性的权限有三种:public internal private 

pragma solidity ^0.4.4;

/*
属性的权限有三种:public internal private 
*/
contract Person {

  uint _age;//默认的是internal

  uint internal _weight;

  uint private _money;

  uint public _sex;

}

效果如下:

说明:属性默认类型为“internal”,“internal”和“private”类型的属性都不能被外部访问,当属性的类型为“public”类型时,会默认自动生成一个和属性名相同并且返回值就是当前属性的get函数。

function _sex() constant returns (uint) {
    return 1;
  }

自己写的get函数会覆盖掉public类型的属性自动生成的get函数,_sex值变为1,而不是0。

 

方法/行为访问权限:合约里的函数

方法的权限有三种:public internal private 

pragma solidity ^0.4.4;

contract Person {

  function age() constant returns (uint) {
    return 18;
  }
  function sex() constant public returns (uint) {
    return 1;
  }
  function weight() constant private returns (uint) {
    return 120;
  }
  function height() constant internal returns (uint) {
    return 170;
  }
  
}

效果如下:

说明:函数的权限默认为“public”,“internal”和“private”类型的属性都不能被外部访问。

属性和方法

pragma solidity ^0.4.4;

contract Person {

  uint _age;//默认的是internal
  uint internal _weight;
  uint private _money;
  uint public _sex;

  function test1() constant returns (uint) {
    this._sex; //public的属性可以指针调用
    return _age;
  }
  function test2() constant public returns (uint) {
    return _weight;
  }
  function test3() constant internal returns (uint) {
    return _money;
  }
  function test4() constant private returns (uint) {
    return _sex;
  }

  function testPublic() constant returns (uint) {
    return this.test1(); //指针访问
  }
  function testInternal() constant returns (uint) {
    return test3(); //直接访问
  }
  function testPrivate() constant returns (uint) {
    return test4(); //直接访问
  }
}

效果如下:

说明:属性默认的权限为internal,只有public类型的属性才可以供外部访问,internal和private类型的属性只能在合约内部使用。

函数的默认权限是public类型,public类型的函数可供外部访问,而internal和private类型的函数不能通过指针(this)进行访问,哪怕是在内部通过调用this访问都会报错,在合约内部访问,我们可以直接访问函数就可以了。

备注:不论是属性还是方法,只有是public类型时,才可以通过合约地址进行访问。合约内部的this就是当前合约的地址,在合约内部要访问internal和private类型的属性和方法时,直接访问即可。

下一章:Solidify实现一个智能合约3(单继承与多继承)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值