solidity学习笔记(3)——Solidity-合约属性和访问权限的继承

!!!重要!!!子合约只能继承父合约中的所有的public类型的函数,不能继承internal/private的函数

pragma solidity ^0.4.4;
contract Animal {
    string _birthDay; // 生日
    int public _age; // 年龄
    int internal _weight; // 身高
    string private _name; // 姓名
    function Animal() {
      _age = 29;
      _weight = 170;
      _name = "Lucky dog";
      _birthDay = "2011-01-01";
    }
    function birthDay() constant returns (string) {
      return _birthDay;
    }
    function age() constant public returns (int) {
      return _age;
    }
    function height() constant internal returns (int) {
      return _weight;
    }
    function name() constant private returns (string) {
      return _name;
    }
}
// 创建一个子合约
contract Person is Animal {
    function Person() {
        _age = 50;
        _weight = 270;
        _birthDay = "2017-01-01";
    }
}

solidity学习笔记(3)——Solidity-合约属性和访问权限的继承_第1张图片

分析:
1、继承的写法:contract Person is Animal  
2、状态变量的继承:可以继承public和internal,但不能继承private,所以Person没有有_name属性;
3、函数的继承:只能继承Public,不能继承internal和private,所以只能看到age()、birthDay(),但看不到height()和name();
4、_age函数来自于状态变量_age public而自动产生的,而person的_age变量继承自Animal的int public _age;

你可能感兴趣的:(Solidity)