Back

blockchain - solidity - contract的virtual, override, super, is

发布时间: 2024-04-14 10:01:00

refer to:
https://shishirsingh66g.medium.com/solidity-part-3-inheritance-virtual-override-and-super-d96344a9aa52

is: 用来表示继承关系

super: 在 child 中调用parent

virtual: 表示某个方法可以在child中被override

override: 表示某个 parent 的方法在child 中可以被重新定义

跟java太像了。

一个例子:

contract Parent {
  function sayHi() public pure virtual returns (string memory) {
    return "hihihi from parent";
  }
}
contract Child is Parent {
  function sayHi() public pure override returns(string memory) {
    return super.sayHi();
  }
}

可以看到,

virtual 和 override 必须同时使用。 位于 returns 左边挨着。如果不用的话,会被提示无法编译:

还可以多重继承,例如:

 contract Child is Parent1, Parent2 ...

Back