solidity的多重继承
solidity的多重继承
首先,我们需要了解“继承”的慨念。
生活中我们总是喜欢说:那个小孩长得真像她妈妈啊!用生物学的角度说:那个小孩***继承***了她妈妈的基因!这个就是我们生活中的“继承”!
在solidity里,或是在其他的语言中,继承的方法是大体相同。下面我们从实际的代码入手:
//contract是合约上的关键字
contract father{
string public eye=“大”;
uint height=200;
function test() returns(string){
return “A”;
}
}
以上代码描述了父亲的属性:eye、身高,以及用来测试的放方法。
contract mother{
uint public height=180;
function test() returns(string){
return “B”;
}
}
描述母亲的属性
contract son is father,mother{//儿子继承父亲,母亲的属性
function getHeight() returns(uint){//获取儿子身高的方法
return height;
}
此时,自己可以想象儿子的身高到底继承了父亲、还是母亲的身高?
答案揭晓:
此时此刻的你,或许在想为什么,儿子的身高为170呢?首先,儿子继承了父亲眼睛大的属性,这毫无疑问。当father有height属性,并且mother也有同样的属性时,我们以***contract son is father,mother***这句代码,以最后mother属性为准。
contract son is father,mother{//儿子继承父亲,母亲的属性
uint height=185; //儿子自己的属性身高185
function getHeight() returns(uint){//获取儿子身高的方法
return height;
}
若此时儿子在继承的时候也有属于自己的身高的属性,此时又会发生什么变化呢?
在部署合约后,儿子会继承父亲、母亲的属性,点击getHeight时,在日志中会显示儿子原有的属性。当子合约有一个属性,会覆盖掉父亲与母亲的属性。
function AorB() view returns(string){
return test();
}
function test() returns(string){
return "son";
}
函数跟上面一致,以最后的继承为准。