メインコンテンツまでスキップ

24 Shadowing Inheritance

  • Contract にある状態変数(state variable)を上書きしようとすると、constructorを使う。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

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において値を付与して上書きする
constructor() {
name = "Contract C";
}

// C.getName 返り値は "Contract C"
}

Remixで試す