Solidify实现一个智能合约3(单继承与多继承)

单继承

方法/函数的继承

代码示例

pragma solidity ^0.4.4;

contract Animal {

  uint  _weight;
  uint private _height;
  uint internal _age;
  uint public _money;

  function test1() constant returns (uint) {
    return _weight;
  }
  function test2() constant public returns (uint) {
    return _height;
  }
  function test3() constant internal returns (uint) {
    return _age;
  }
  function test4() constant private returns (uint) {
    return _money;
  }
}

//Dog继承Animal,is表示继承
contract Dog is Animal {
  
}

效果如下:

说明:继承中,函数(方法)的权限为public时才能被子合约继承。

属性继承

代码示例

pragma solidity ^0.4.4;

contract Animal {

  uint  _weight;
  uint private _height;
  uint internal _age;
  uint public _money;

  function test1() constant returns (uint) {
    return _weight;
  }
  function test2() constant public returns (uint) {
    return _height;
  }
  function test3() constant internal returns (uint) {
    return _age;
  }
  function test4() constant private returns (uint) {
    return _money;
  }
}

//Dog继承Animal,is表示继承
contract Dog is Animal {

  function testWeight() constant returns (uint) {
    return _weight;
  }
  //private属性不能被继承
  /*
  function testHeight() constant returns (uint) {
    return _height; 
  }*/
  function testAge() constant returns (uint) {
    return _age;
  }
  function testMoney() constant returns (uint) {
    return _money;
  }
}

效果如下

说明:子合约可以继承public和internal类型的属性,不能继承private类型的属性。

多继承

代码示例

pragma solidity ^0.4.4;

contract Animal {

  uint  _weight;
  uint private _height;
  uint internal _age;
  uint public _money;

  function test1() constant returns (uint) {
    return _weight;
  }
  function test2() constant public returns (uint) {
    return _height;
  }
  function test3() constant internal returns (uint) {
    return _age;
  }
  function test4() constant private returns (uint) {
    return _money;
  }
}

contract Sex {
  uint _sex;
  function Sex() {
    _sex = 1;
  }
  function sex() constant returns (uint) {
    return _sex;
  }
}

//Dog继承Animal和Sex,is表示继承,多继承用","分开。
contract Dog is Animal,Sex {

  function testWeight() constant returns (uint) {
    return _weight;
  }
  //private属性不能被继承
  /*
  function testHeight() constant returns (uint) {
    return _height; 
  }*/
  function testAge() constant returns (uint) {
    return _age;
  }
  function testMoney() constant returns (uint) {
    return _money;
  }
}

效果如下:

说明:效果同上,继承时,子合约的优先级高。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值