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;