Inheritance
継承について学習します
継承はプログラミングの基本的な概念であり、コードの再利用、階層構造の構築、拡張性の確保などの役割を果たします
継承の仕方
solidityではcontractのisを用いて継承を表現する
contract Parent {
// some code
}
contract Child is Parent {
// some code
}
複数継承することも可能で、その場合is以後にカンマ区切りで列挙する
contract Parent1 {
// some code
}
contract Parent2 {
// some code
}
contract Child is Parent1, Parent2 {
// some code
}
親の利用
継承に関係するVisibilityについてはScopeを参照
変数
親から継承した変数は子から参照・変更が可能
contract Parent {
uint parentState;
}
contract Child is Parent {
function setParentState(uint num) {
parentState = num;
}
function getParentState() returns(uint) {
return parentState;
}
}
関数
親から継承した関数は子から呼び出し可能
contract Parent {
uint parentState;
function getParentState() returns(uint) {
return parentState;
}
}
contract Child is Parent {
function callParentFunction() returns(uint) {
return getParentState();
}
}
親で宣言した関数をオーバーライドするには、親にvirtual修飾子、子にoverride修飾子を付けなければならない
contract Parent {
uint parentState;
function getParentState() virtual returns(uint) {
return parentState;
}
}
contract Child is Parent {
function getParentState() override returns(uint) {
return parentState * 2;
}
}