ethereum(以太坊)(二)--合约中属性和行为的访问权限
pragma solidity ^0.4.0;contract Test{/* 属性的访问权限priveta public internaldefualt internalinterlnal,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 Testthis._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(); //interlthis.getD();//externalgetE();//privatethis.kill();//publickill();//public }//未使用继承,外部调用 //只能调用external/public contract mytract{function getA() public {**getC(); //interlthis.getD();//external**getE();//privatethis.kill();//public**kill();//public}}//使用继承,外部调用 //无法调用私有变量 contract mytract is Funder{function getA() public {getC(); //interlthis.getD();//external**getE();//privatethis.kill();//publickill();//public} }
转载于:https://www.cnblogs.com/eilinge/p/9951268.html
ethereum(以太坊)(二)--合约中属性和行为的访问权限相关推荐
- 以太坊智能合约中随机数预测
一.前言 作为首次币发行(ICO)的平台,以太坊已经获得了极大的普及. 但是,它不仅仅用于 ERC20 通证,轮盘,彩票和纸牌游戏都可以使用以太坊区块链实现. 与任何区块链实施一样,以太坊是不可逆的, ...
- 以太坊智能合约中 pragma solidity^0.6.10 是什么意思
pragma就是Solidity的编译控制指令,控制智能合约编译器的版本, ^0.6.10代表的含义是可以使用0.6.x的版本对该代码进行编译,也就是说0.5.x或0.7.x的编译器版本不允许编译该智 ...
- 以太坊智能合约生命周期(Ethereum smart contracts lifecycle)
合约对象初始化 上一节中我们提到Solidity编写合约和面向对象编程语言非常相似,我们可以通过构造函数(constructor)来初始化合约对象.构造函数就是方法名和合约名字相同的函数,创建合约时会 ...
- 以太坊智能合约开发-《精通以太坊智能合约开发》学习总结实践
文章目录 一.初探以太访智能合约 1. remix小demo 2. 写智能合约用的编程语言 二.以太坊核心概念 1. 交易/事务( Transaction ) 2. 区块 3. 共识协议:工作量证明( ...
- 区块链兼容以太坊智能合约
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 引言 随着区块链技术以及应用的普及,越来越多的区块链出现在大众视野中.由于区块链技术的开源特性,任何公司和个人都可以方便 ...
- 以太坊智能合约开发 | 一个资深技术专家的心路历程
原创: 杨镇 一块链习社区 微信号yikuailianxishequ 本文作者杨镇, 以太坊黄皮书中译者,资深以太坊专家.曾独立中译了以太坊 Homestead 官方文档,Solidity 官方文档中 ...
- 以太坊智能合约Demo
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战demo示例快速入门,用demo例 ...
- 以太坊智能合约安全 Dasp Top10
译者:爱上平顶⼭ 来源:慢雾区 原文链接:https://www.dasp.co/ 这是分布式应⽤安全项⽬(或DASP)2018 年排名前10的漏洞第⼀次迭代 该项⽬是NCC集团的⼀项举措.这是⼀个开 ...
- 以太坊智能合约安全入门了解一下(下)
作者:RickGray 作者博客:http://rickgray.me/2018/05/26/ethereum-smart-contracts-vulnerabilities-review-part2 ...
- 以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明
以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明 为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3.对象.底层实 ...
最新文章
- [转]OpenStack的网络模式
- StoryBoard概览
- 如何利用云服务器挖矿_企业如何选择云服务器
- MySQL系列(一) MySQL体系结构概述
- java日期大小比较
- 安装php 端口被占用,安装phpstudy,APMServ启动服务提示80端口被占用
- 清华发布全国城市AI实力榜,你那里排名第几?
- 社区发现(三)--CMP
- 【Android Studio安装部署系列】三十一、从Android studio3.0.0升级到Android studio3.0.1
- C#编写的一个SFTP工具类
- VBA操作WORD(二):替换字符(含空格、全角字符、换行符等)
- 利用SPI驱动12864液晶
- Protel 2004 的PCB中整体修改元件的技巧
- 用Mapviz显示卫星地图轨迹
- Beyond Compare 中文乱码解决
- 基于Casbin实现ABAC
- msys2 mysql_MSYS2配置总结
- 机电工程常用工程设备
- 超高速滑环的特点及应用领域
- 百度定位后,微信小程序位置不准,怎么办 腾讯/百度地图经纬度相互转换
热门文章
- 拓端tecdat|R语言Gibbs抽样的贝叶斯简单线性回归仿真分析
- c++_String一些使用记录
- AndroidStudio使用XmlPullParser解析xml文件
- spring5.0学习笔记2
- php显示jquery未定义,运行PHP脚本时,jQuery函数表示未定义
- 感知器算法超详细讲解实战【原理+手撸代码实现】+spark应用实践
- Python实现四种方法求解计算阶乘和(1!+2!+3!+...+n!)
- bind 跟服务器修改,Linux下使用Bind搭建域名服务器
- c语言 时间函数,C/C+时间相关的函数
- 区块链 Scilla是什么