問題一覧に戻る
中級継承
問題54: 継承の順序
Solidityの継承順序を学習します - 複数の親コントラクトがどのように線形化され解決されるかです。SolidityはC3線形化アルゴリズムを使用し、右から左に継承を処理します。最も右の親が競合で優先されます。この「最も派生した」原則により、重複するメンバーを持つ複数のコントラクトから継承する際の予測可能な動作を保証します。線形化の理解は複雑な継承階層に重要です。複数の標準を組み合わせるコントラクトの構築や、洗練されたDeFiプロトコルでのダイヤモンド継承パターンを扱う際に不可欠です。
pragma solidity ^0.8.0;
contract A {
uint256 public value = 1;
}
contract B {
uint256 public value = 2;
}
// 右の親が優先
contract C is , {
// どの値が使用されるか
function getValue() public view returns (uint256) {
return value; // Returns 1 (from A)
}
}