ethereum(以太坊)(三)--合约单继承与多继承
pragma solidity ^0.4.0;
// priveta public internal
contract Test{
//defualt internal
uint8 internal _money;
uint8 _age;
uint8 private _height;
uint8 public _sex;
function test() constant returns(uint8){
return _money;
}
function testAge() constant returns(uint8){
return _age;
}
function testHeight()constant returns(uint8){
return _height;
}
function testSex() constant returns(uint8){
return _sex;
}
function testSex1() external returns(uint8){
return 10;
}
function testAddress1() constant returns(address){
return msg.sender; //0xca35b7d915458ef540ade6068dfe2f44e8fa733c
}
}
contract Test1{
uint _mouth;
function Test1(){
_mouth = 11;
}
function mouth() returns(uint){
return _mouth;
}
}
contract SubTest is Test,Test1{
function testAddress2()constant returns(address){
return msg.sender;//0xca35b7d915458ef540ade6068dfe2f44e8fa733c
}
function testInternel1()constant returns(uint8){
return _money;
}
function testInternel2()constant returns(uint8){
return _age;
}
/*DeclarationError: Undeclared identifier
function testPrivate() returns(uint8){ //cannot call Private function/attribute
return _height;
}
*/
function testPublic()constant returns(uint8){
return _sex;
}
function testExternal()constant returns(uint8){
return this.testSex1();
//return this.testSex1; TypeError: Return argument type function () external returns (uint8)
//is not implicitly convertible to expected type (type of first return variable) uint8
//return testSex1; DeclarationError: Undeclared identifier
}
function mouth() returns(uint){
return 100; //Rewriting the Mouth function in the subcontract overrides the value written by the parent function,only Public function can be overrided
}
}
public
1.public类型的状态变量和函数的权限最大,可供外部、子合约、合约内部访问。
2.状态变量声明时,默认为internal类型,只有显示声明为public类型的状态变量才会自动生成一个和状态变量同名的get函数以供外部获取当前状态变量的值。
函数声明时默认为public类型,和显示声明为public类型的函数一样,都可供外部访问。 internal
1.internal类型的状态变量可供外部和子合约调用。
2.子合约中能继承父合约中的所有的public/external类型的函数,不能继承private的函数,也无法调用;internal无法继承,可以调用
private 1.private私有类型,只能在本合约内部使用,所以在子合约中尝试使用时,就会报错。
external
1.子合约调用父合约中的external函数时,可以用this.testSex1()/testSex1()
重写
子合约可以将父合约的public类型的函数,只能继承public类型的函数,继承过来的函数进行重写(父函数不是只读属性(constant))
//https://pan.baidu.com/s/1cRICAY9aSHn6vNI4YN1tQQ
ethereum(以太坊)(三)--合约单继承与多继承的更多相关文章
- ethereum(以太坊)(二)--合约中属性和行为的访问权限
pragma solidity ^0.4.0; contract Test{ /* 属性的访问权限 priveta public internal defualt internal interlnal ...
- 以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明
以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明 为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3.对象.底层实 ...
- 以太坊智能合约Hello World示例程序
简介 以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开 ...
- Go语言打造以太坊智能合约测试框架(level3)
传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...
- 以太坊智能合约 Solidity 的常用数据类型介绍
目录 目录 1.数组 1.1.对数组的增删改查操作. 2.String.Bytes.Mapping的使用 3.Enums 和 Structs 的简单应用 4.Ether 单位和 Time 单位 5.A ...
- 深入以太坊智能合约 ABI
开发 DApp 时要调用在区块链上的以太坊智能合约,就需要智能合约的 ABI.本文希望更多了解 ABI,如为什么需要 ABI?如何解读 Ethereum 的智能合约 ABI?以及如何取得合约的 ABI ...
- Go语言打造以太坊智能合约测试框架(level1)
传送门: 柏链项目学院 Go语言打造以太坊智能合约测试框架 前言 这是什么? 这是一个基于go语言编写的,自动化测试以太坊智能合约的开发框架,使用此框架,可以自动化的部署合约,自动测试合约内的功能函数 ...
- rpc接口调用以太坊智能合约
rpc接口调用以太坊智能合约 传送门: 柏链项目学院 在以太坊摸爬滚打有些日子了,也遇到了各种各样的问题.这几天主要研究了一下如何通过rpc接口编译.部署和调用合约.也遇到了一些困难和问题,下面将 ...
- 如何通过以太坊智能合约来进行众筹(ICO)
前面我们有两遍文章写了如何发行代币,今天我们讲一下如何使用代币来公开募资,即编写一个募资合约. 写在前面 本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还 ...
随机推荐
- 栈队列例题2:SetOfStack放盘子
代码如下: import java.util.ArrayList; import java.util.Scanner; public class SetOfStack { public static ...
- CSS知识点梳理
- 计算Sn
求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字. 例如:2+22+222+2222+22222(n=5), 输入 输入两个数.第一个为a ,第二个为n(表示有多少个数相加 ...
- (生产)vuex - 状态管理
参考:https://vuex.vuejs.org/zh-cn/ 安装 直接下载 / CDN 引用 https://unpkg.com/vuex在 Vue 之后引入 vuex 会进行自动安装:< ...
- Python 爬虫实战(二):使用 requests-html
Python 爬虫实战(一):使用 requests 和 BeautifulSoup,我们使用了 requests 做网络请求,拿到网页数据再用 BeautifulSoup 解析,就在前不久,requ ...
- VirtualBox中linux虚拟机和主机间的共享文件设置
设置共享文件路径 点击虚拟机 设置-->选择 共享文件夹 (图1 设置共享文件夹) 设置共享文件夹路径 1 选择路径 2 填写自定义的共享名称(在后面需要与挂载路径相对应) 3 设置自动挂载/固 ...
- Description Resource Path Location Type Java compiler level does not match the version of the installed Java project facet Unknown Faceted Project Problem (Java Version Mismatch)
project 编译问题,需要三处的jdk版本要保持一致,才能编译通过. 1.在项目上右键properties->project Facets->修改右侧的version 保持一致 2. ...
- 使用ABAP Push Channel(APC)开发的乒乓球游戏,可双打
url: https://:/sap/bc/apc_test/ping_pong/game 或者事务码SICF, 输入ping_pong, 按F8: 选中搜索结果,点右键选择Test,即可打开url. ...
- Selenium入门6 操作元素,获取元素属性
取元素的text,属性get_attribute,标签名tag_name 操作元素:send_keys输入,click点击,submit提交,clear清除输入 状态判断:is_display,is_ ...
- IOS笔记 : 一些小技巧
计算单元格高度,在自定义cell中 -(void) resizeTheHeight{ CGFloat contentWidth = 280; UIFont *font = [UIFont fontWi ...