solidity - 继承(Inheritance)
1.合约之间的继承使用关键字 is 2.父合约的方法想被子合约继承则需要使用关键virtual 3.子合约想覆盖父合约的方法则需要使用关键字override 4.在子合约中调用父合约需要使用关键字super 5.继承遵循最远继承,后面继承的会覆盖前面的方法
contract A {
event Log(string message);
function foo() public virtual {
emit Log("A.foo called");
}
function bar() public virtual {
emit Log("A.bar called");
}
}
contract B is A {
function foo() public virtual override {
emit Log("B.foo called");
A.foo();
}
function bar() public virtual override {
emit Log("B.bar called");
super.bar();
}
}
contract C is A {
function foo() public virtual override {
emit Log("C.foo called");
A.foo();
}
function bar() public virtual override {
emit Log("C.bar called");
super.bar();
}
}
contract D is B, C {
function foo() public override(B, C) {
super.foo();
}
function bar() public override(B, C) {
super.bar();
}
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!