solidity學習筆記(3)——Solidity-合約屬性和訪問許可權的繼承
阿新 • • 發佈:2018-12-15
!!!重要!!!子合約只能繼承父合約中的所有的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;