在合约继承中,使用 super
关键字可以访问基类中的函数和状态变量。
以下示例演示了如何使用 super
关键字来访问基类中的函数和状态变量。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
contract A {
uint256 public myUint;
function setMyUint(uint256 _myUint) public {
myUint = _myUint;
}
}
contract B is A {
function setMyUint(uint256 _myUint) public {
super.setMyUint(_myUint + 1);
}
}
A
合约定义了一个名为myUint
的状态变量,并定义了一个名为setMyUint
的可公开函数。B
合约继承了A
合约,并重写了setMyUint
函数。在重写的函数中,我们使用super
关键字调用基类的setMyUint
函数,并将_myUint
参数的值加上1
传递给它。
现在,我们可以部署 B
合约并调用 setMyUint
函数来更新 myUint
的值。
我们可以看到,在调用 B
合约的 setMyUint
函数后,myUint
变量的值为 11
。
- 只能从一个合约继承。
- 只能访问基类中可公开的函数和状态变量。