Solidify实现一个智能合约2(属性和行为的访问权限)
属性的访问权限
属性:状态变量
属性的权限有三种:public internal private
pragma solidity ^0.4.4;/*
属性的权限有三种:public internal private
*/
contract Person {uint _age;//默认的是internaluint 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;//默认的是internaluint 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(单继承与多继承)
Solidify实现一个智能合约2(属性和行为的访问权限)相关推荐
- Solidify实现一个智能合约12(字典/映射)
语法 mapping(_keyType => _ValueType) 字典/映射其实就是一个一对一键值对存储关系. 举个例子:{age:18,stuId:10003,name:"His ...
- Solidify实现一个智能合约16(创建一个简单的代币)
创建一个工程,新建一个EncryptedToken合约. 代码如下: pragma solidity ^0.4.4;contract EncryptedToken {uint INITIAL_SUPP ...
- Solidify实现一个智能合约17(创建BLC币)
创建文件夹:mkdir BLC 进入后执行:truffle init 再执行:npm init,一直回车 再执行:npm install zeppelin-solidity hisee@liu:/me ...
- Solidify实现一个智能合约3(单继承与多继承)
单继承 方法/函数的继承 代码示例 pragma solidity ^0.4.4;contract Animal {uint _weight;uint private _height;uint int ...
- Solidify实现一个智能合约10(一维数组和二维数组)
固定长度的数组 固定长度类型数组的声明及其通过length方法获取数组长度求和. pragma solidity ^0.4.4; /* 数组一旦创建,长度不可变 但里面的内容可变 */ contrac ...
- Solidify实现一个智能合约14(元组)
定义 元组使用小括号,只需要在括号中添加元素,并使用逗号隔开即可. PS:元组中各个元素的类型可以不一样,但数组中的元素必须一样. 示例1 pragma solidity ^0.4.4; contra ...
- Solidify实现一个智能合约5(值类型和引用类型的传递)
值传递 代码示例: pragma solidity ^0.4.4;contract Person {uint _age;function Person(uint age) {_age = age;}f ...
- Solidify实现一个智能合约7(固定大小字节数组)
固定大小字节数组 固定大小字节数组可以通过bytes1,bytes2,bytes3,...,bytes32来进行声明.PS:byte的别名就是bytes1. bytes1只能存储1个字节,也就是二进制 ...
- Solidify实现一个智能合约11(结构体)
结构体的声明 pragma solidity ^0.4.4;contract Students {struct Person {uint age;uint stuId;string name;}Per ...
最新文章
- 医疗信息化、医学、医院管理、医疗器械资料下载
- 全套CRC校验的算法
- .NET Core Tools转向使用MSBuild项目格式
- php表格怎么合并单元格格式化,table标签的结构与合并单元格的实现方法
- c语言中锁的作用,C语言中的多线程死锁
- 宏定义是写在.h文件里还是.c文件里
- 【递归算法01】递归的调用机制
- 一些自成系统、完备的教程(链接、博客、github等)
- DirectX11 With Windows SDK--13 动手实现一个简易Effects框架、阴影效果绘制
- 凸优化第八章几何问题 8.6分类
- 微信的APP支付开发,服务端和支付端的问题
- 2022电工(中级)考试模拟100题模拟考试平台操作
- androidStudio 中使用矢量图
- python3网络爬虫-介绍
- cubase打开时,别的软件和网页无法正常播放视频。
- 安卓面试中高级安卓开发工程师总结之——如何写一份让HR主动邀请你面试的简历
- 对技术的态度/编程修养(上)
- 电机远计算机控制,电机控制器
- 计算机中专综合知识,湖南省汨罗市职业中专高考(八)计算机应用专业综合知识试题讲解.doc...
- 包裹细胞膜的磁性纳米微载体/负载斑蝥素的巨噬细胞膜包封金属有机框架纳米颗粒的研究
热门文章
- 闪送接口对接之获取AccessToken【JAVA】
- (附源码)spring boot SneakerHome球鞋商城 毕业设计 011229
- 自从我发现2345是流氓网址清除不掉后......
- 封装:WPF绘制曲线视图
- python function gamma_Python中使用Gamma函数的累积分布函数
- Android中ProgressDialog的用法
- java Object类及其常用方法
- Closure(闭包)类详解
- java 模拟多线程并发_Java中模拟同时并发请求
- 交通元宇宙主题汇总(附链接)