📘
[Solidity] 親が継承している関数を子で `override` したらどうなるか?
(タイトルで何を言っているか理解できた人は神)
下記みたいなケースのことです。気になったので調べてみた。
-
C
でA
のfoo()
を上書き -
B
でhoge()
を実行すると、Aよ
orCです
どっち?
contract A {
function foo() public pure virtual returns (string memory) {
return "Aよ";
}
}
contract B is A {
function hoge() public pure virtual returns (string memory) {
return foo();
}
}
contract C is A, B {
function foo() public pure override returns (string memory) {
return "Cです";
}
}
Cです
と出力される
【結論】 どうやら子で上書きした内容が優先されるみたいです。
Discussion