如需获取本内容的最新版本,请参见 Cyfrin.io 上的“Shadowing Inherited State Variables (Code Example)”
与函数不同,状态变量无法通过在子合约中重新声明来覆盖。
让我们学习如何正确覆盖继承的状态变量。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
contract A {
string public name = "Contract A";
function getName() public view returns (string memory) {
return name;
}
}
// Solidity 0.6 中不允许变量遮蔽
// 这将无法编译
// contract B is A {
// string public name = "Contract B";
// }
contract C is A {
// 这是正确覆盖继承状态变量的方法。
constructor() {
name = "Contract C";
}
// C.getName returns "Contract C"
}
Remix Lite 尝试一下
END