問題一覧に戻る
中級継承
問題53: 多重継承

Solidityの多重継承を学習します - 複数の親コントラクトから同時に継承します。SolidityはC3線形化を使用して継承順序を解決し、右から左に処理します。関数が競合する場合、すべての親コントラクトを指定して明示的にオーバーライドする必要があります。これによりダイヤモンド問題を回避しながら複数のソースから機能を組み合わせることができます。多重継承は動作を合成することで機能豊富なコントラクトを作成するのに強力です。継承順序と競合解決の理解は、複数の標準と機能を組み合わせるDeFiの複雑なコントラクトシステムの構築に不可欠です。

pragma solidity ^0.8.0;

contract A {
function foo() public pure virtual returns (string memory) {
return "A";
}
}

contract B {
function foo() public pure virtual returns (string memory) {
return "B";
}
}

// 多重継承
contract C A, B {
// 複数の親をオーバーライド
function foo() public pure (A, B) returns (string memory) {
return "C";
}
}