博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ethereum(以太坊)(二)--合约中属性和行为的访问权限
阅读量:4325 次
发布时间:2019-06-06

本文共 2162 字,大约阅读时间需要 7 分钟。

pragma solidity ^0.4.0;contract Test{    /* 属性的访问权限    priveta public internal    defualt internal    interlnal,private cannot be accessed from outside    */    uint8 internal _money;    uint8 _age;    uint8 private _height;    uint8 public _sex;        /*uint8 public _sex == function _sex() returns(uint8)     当属性类型为public时,会生成一个和属性名相同并且返回值就是当前属性的get函数    function _sex()函数会覆盖掉public类型的属性自动生成的get函数;_sex()返回的是1,而不是0    */    function _sex() returns(uint8){        //return _sex;        //this._age; return this.age();TypeError: Member "age" not found or not visible after argument-dependent lookup in contract Test        this._sex();        return 1;    }        /*方法的访问权限    //public private internal external    //defualt public    //internal private cannot be accessed from outside    */    function sex() returns(uint8){        return 1;    }    function age() internal returns(uint8){        return 18;    }    function height() public returns(uint8){        return 175;    }    function money() private returns(uint){        return 3500;    }        function year() external returns(uint){        return 2018;    }        function testInternal() returns(uint){        //return this.sex();        //return this.year(); this(指针) 通过合约地址进行访问         return money();        //return this.age();TypeError: Member "age" not found or not visible after argument-dependent lookup in contract Person        //    }}
无论是属性还是方法,只有是public/external类型时,才可以通过合约地址进行访问,合约内部的this就是当前合约地址。 在合约内部如果要访问internal,private类型的属性或者是函数,直接访问即可,不要试图通过this去访问

 

//本合约内部调用//this.external调用 function test() public{    getC(); //interl    this.getD();//external    getE();//private    this.kill();//public    kill();//public}//未使用继承,外部调用//只能调用external/publiccontract mytract{function getA() public {    **getC(); //interl    this.getD();//external    **getE();//private    this.kill();//public    **kill();//public    }  }//使用继承,外部调用//无法调用私有变量contract mytract is Funder{        function getA() public {        getC(); //interl        this.getD();//external        **getE();//private        this.kill();//public        kill();//public    }}

 

转载于:https://www.cnblogs.com/eilinge/p/9951268.html

你可能感兴趣的文章
自动测试用工具
查看>>
前端基础之BOM和DOM
查看>>
[T-ARA/筷子兄弟][Little Apple]
查看>>
编译Libgdiplus遇到的问题
查看>>
【NOIP 模拟赛】Evensgn 剪树枝 树形dp
查看>>
java学习笔记④MySql数据库--01/02 database table 数据的增删改
查看>>
两台电脑如何实现共享文件
查看>>
组合模式Composite
查看>>
程序员最想得到的十大证件,你最想得到哪个?
查看>>
我的第一篇CBBLOGS博客
查看>>
【MyBean调试笔记】接口的使用和清理
查看>>
07 js自定义函数
查看>>
jQueru中数据交换格式XML和JSON对比
查看>>
form表单序列化后的数据转json对象
查看>>
[PYTHON]一个简单的单元測试框架
查看>>
iOS开发网络篇—XML数据的解析
查看>>
[BZOJ4303]数列
查看>>
一般处理程序在VS2012中打开问题
查看>>
C语言中的++和--
查看>>
thinkphp3.2.3入口文件详解
查看>>