ethereum(以太坊)(二)--合约中属性和行为的访问权限
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/public
contract 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
}
}
ethereum(以太坊)(二)--合约中属性和行为的访问权限的更多相关文章
- ethereum(以太坊)(三)--合约单继承与多继承
pragma solidity ^0.4.0; // priveta public internal contract Test{ //defualt internal uint8 internal ...
- 以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明
以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明 为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3.对象.底层实 ...
- 以太坊智能合约 Solidity 的常用数据类型介绍
目录 目录 1.数组 1.1.对数组的增删改查操作. 2.String.Bytes.Mapping的使用 3.Enums 和 Structs 的简单应用 4.Ether 单位和 Time 单位 5.A ...
- 以太坊智能合约Hello World示例程序
简介 以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开 ...
- 如何通过以太坊智能合约来进行众筹(ICO)
前面我们有两遍文章写了如何发行代币,今天我们讲一下如何使用代币来公开募资,即编写一个募资合约. 写在前面 本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还 ...
- 深入以太坊智能合约 ABI
开发 DApp 时要调用在区块链上的以太坊智能合约,就需要智能合约的 ABI.本文希望更多了解 ABI,如为什么需要 ABI?如何解读 Ethereum 的智能合约 ABI?以及如何取得合约的 ABI ...
- Go语言打造以太坊智能合约测试框架(level3)
传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...
- Go语言打造以太坊智能合约测试框架(level1)
传送门: 柏链项目学院 Go语言打造以太坊智能合约测试框架 前言 这是什么? 这是一个基于go语言编写的,自动化测试以太坊智能合约的开发框架,使用此框架,可以自动化的部署合约,自动测试合约内的功能函数 ...
- rpc接口调用以太坊智能合约
rpc接口调用以太坊智能合约 传送门: 柏链项目学院 在以太坊摸爬滚打有些日子了,也遇到了各种各样的问题.这几天主要研究了一下如何通过rpc接口编译.部署和调用合约.也遇到了一些困难和问题,下面将 ...
随机推荐
- JQuery 的跨域方法 可跨任意网站
JS的跨域问题,很多人在网上找其解决方法,教其用IFRAME去解决的文章很多,真有那么复杂吗?其实很简单的,如果你用JQUERY,一个GETJSON方法就搞定了,而且是一行代码搞定. 下面开始贴出方法 ...
- PHP+phpMyAdmin编程插入数据显示中文乱码的问题
相信初学php的同学应该都会试一些小程序,比如从input文本框输入数据后点击提交,数据自动插入数据库保存. 但是如果是输入中文提交,不经过一定配置,在phpMyAdmin中就会显示乱码.什么%ez. ...
- BZOJ4245: [ONTAK2015]OR-XOR(前缀和)
题意 题目链接 Sol 又是一道非常interesting的题目 很显然要按位考虑 因为最终答案是xor之后or,所以分开之后之后这样位上1的数量是一定是偶数,否则直接加到答案里面 同时,这里面有些部 ...
- The seventeenth day
A good book is a good friend 好书如挚友
- u-boot分析(七)----内存初始化
u-boot分析(七) 上篇博文我们按照210的启动流程,分析到了时钟初始化,今天我们继续按照u-boot的启动流程对内存的初始化进行分析. 今天我们会用到的文档: 1. 2440芯片手 ...
- 如何使用Nunit进行测试
如何使用Nunit进行测试(Visual Studio 2017 comminity) 原文:如何使用Nunit进行测试(Visual Studio 2017 comminity) 一.环境 操作系统 ...
- Struts1.x 用户登录模块的实现
页面验证部分: <%@ page language="java" contentType="text/html; charset=UTF-8" pageE ...
- php读取mysql中文乱码
连接mysql的文件: <?php /***************************** *数据库连接 *****************************/ $conn = @m ...
- 03、IDEA下Spark API编程
03.IDEA下Spark API编程 3.1 编程实现Word Count 3.1.1 创建Scala模块 3.1.2 添加maven支持,并引入spark依赖 <?xml version=& ...
- javascript中的循环引用对象处理
先说明一下什么是循环引用对象: var a={"name":"zzz"}; var b={"name":"vvv"}; ...