当使用super时,调用的是继承的函数,不是它自己,比如下边给出的例子中,函数名字是相同的,要知道调用的不是它自己,是继承父合约中的同名函数。
contract C {
uint public u;
function f() public virtual{
u = 1;
}
}
contract B is C {
function f() public override virtual{
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时,调用的是继承的该函数,不是它自己,比如下边给出的例子中,函数名字是相同的,要知道调用的不是它自己,是继承父合约中的同名函数。
super.f();
}
function f2() public { // will set u to 2
B.f();
}
function f3() public { // will set u to 1
C.f();
}
}