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(以太坊)(三)--合约单继承与多继承的更多相关文章

  1. ethereum(以太坊)(二)--合约中属性和行为的访问权限

    pragma solidity ^0.4.0; contract Test{ /* 属性的访问权限 priveta public internal defualt internal interlnal ...

  2. 以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明

    以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明 为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3.对象.底层实 ...

  3. 以太坊智能合约Hello World示例程序

    简介 以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开 ...

  4. Go语言打造以太坊智能合约测试框架(level3)

    传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...

  5. 以太坊智能合约 Solidity 的常用数据类型介绍

    目录 目录 1.数组 1.1.对数组的增删改查操作. 2.String.Bytes.Mapping的使用 3.Enums 和 Structs 的简单应用 4.Ether 单位和 Time 单位 5.A ...

  6. 深入以太坊智能合约 ABI

    开发 DApp 时要调用在区块链上的以太坊智能合约,就需要智能合约的 ABI.本文希望更多了解 ABI,如为什么需要 ABI?如何解读 Ethereum 的智能合约 ABI?以及如何取得合约的 ABI ...

  7. Go语言打造以太坊智能合约测试框架(level1)

    传送门: 柏链项目学院 Go语言打造以太坊智能合约测试框架 前言 这是什么? 这是一个基于go语言编写的,自动化测试以太坊智能合约的开发框架,使用此框架,可以自动化的部署合约,自动测试合约内的功能函数 ...

  8. rpc接口调用以太坊智能合约

    rpc接口调用以太坊智能合约 传送门: 柏链项目学院   在以太坊摸爬滚打有些日子了,也遇到了各种各样的问题.这几天主要研究了一下如何通过rpc接口编译.部署和调用合约.也遇到了一些困难和问题,下面将 ...

  9. 如何通过以太坊智能合约来进行众筹(ICO)

    前面我们有两遍文章写了如何发行代币,今天我们讲一下如何使用代币来公开募资,即编写一个募资合约. 写在前面 本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还 ...

随机推荐

  1. PHP函数的引用传递(地址传递)

    PHP中的引用: 在PHP中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字.在PHP中引用意味着用不同的名字访问同一个变量的内容. 比如:$a = 'hello world'; $b = ...

  2. code first关系表达

    1.一对多关系 [Table("classInfo")] public class ClassInfo { public int Id { get; set; } public s ...

  3. agc001E - BBQ Hard(dp 组合数)

    题意 题目链接 Sol 非常妙的一道题目. 首先,我们可以把\(C_{a_i + b_i + a_j + b_j}^{a_i + a_j}\)看做从\((-a_i, -b_i)\)走到\((a_j, ...

  4. P1576 最小花费

    题目背景 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元 ...

  5. 超链接导致window.location.href失效的解决办法

    通常我们采用 window.location.href 执行页面间的跳转,比如下面的语句 window.location.href = 'https://www.baidu.com/'; 一般执行上面 ...

  6. 转:解决Arcsde用户锁定的问题

    采用arcgis平台做GIS应用的人,可能偶尔碰到sde用户锁定(Arccatalog 或应用程序异常退出的时比较多)的问题,往往咱们解决的办法是重启sde服务.如果一个服务器上有多个连接时,重启服务 ...

  7. ListView中CheckBox错乱解决

    思路: ListView在复用的时候会出现很多问题,CheckBox状态会出现错乱,解决思路: 1.使用Map集合的键值对的形式来存放position位置上CheckBox的状态 2.监听CheckB ...

  8. 【起航计划 016】2015 起航计划 Android APIDemo的魔鬼步伐 15 App->Activity->Wallpaper 系统壁纸作为当前Activity的背景

    Wallpaper介绍一个Activity如何通过Style把系统Wallpaper作为当前Activity的背景. 这是WallpaperActivity在AndroidManifest.xml中的 ...

  9. centos7.4 系统安装指导

    centos7 系统安装指导 安装前规划 下载安装文件 安装过程设置 安装后系统基本设置 安装前规划 CentOS 7.x系列只有64位系统,没有32位. 生产服务器建议安装CentOS-7-x86_ ...

  10. SAP ECC6.0-中建信息版

    平台: SUSE Enterprise Server 类型: 虚拟机镜像 软件包: sap ecc 6.0 ehp7 sps10 commercial erp sap 服务优惠价: 按服务商许可协议 ...