【多重繼承與 super】
pragma solidity ^0.8.11;
contract C {
uint public u;
function f() public virtual {
u = 1;
}
}
contract B is C {
function f() public virtual override{
u = 2;
}
}
contract A is B {
function f() public override{ // will set u to 3
u = 3;
}
function f1() public { // will set u to 2
super.f();
}
function f2() public { // will set u to 2
B.f();
// 使用 super 去呼叫的話,是呼叫 b 合約的,而不是 c 合約的。
}
function f3() public { // will set u to 1
C.f();
// 如果要呼叫 c 合約中的函式,需要使用函式名。
}
}Last updated