メインコンテンツまでスキップ

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

Reference