1. 程式人生 > >solidity學習筆記(3)——Solidity-合約屬性和訪問許可權的繼承

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";
    }
}

分析: 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;