Lesson 3: Remix Storage Factory
引用其他合约文件
使用import 引用其他合约文件,并创建一个合约文件类型
//SPDX-License-Identifier:MIT
pragma solidity ^0.8.0;
import "./SimpleStorage.sol";
contract StorageFactory{
SimpleStorage[] public simpleStorageArray;
function createSimpleStorageContract() public {
//和java一样创建一个合约类型并放入数组
SimpleStorage simpleStorage = new SimpleStorage();
simpleStorageArray.push(simpleStorage);
}
}
引用其他合约文件后的方法调用
//SPDX-License-Identifier:MIT
pragma solidity ^0.8.0;
import "./SimpleStorage.sol";
contract StorageFactory{
SimpleStorage[] public simpleStorageArray;
//创建一个simpleStorage
function createSimpleStorageContract() public {
SimpleStorage simpleStorage = new SimpleStorage();
simpleStorageArray.push(simpleStorage);
}
//同java一样,直接用.方法调用
function sfSet(uint256 _index , int8 _number )public {
SimpleStorage simpleStorage = simpleStorageArray[_index];
//通过数组获取某一个合约,然后这个合约本身的方法存储数据
simpleStorage.saveNumber(_number);
}
function sfGet(uint256 _index) public view returns(int8) {
SimpleStorage simpleStorage = simpleStorageArray[_index];
//通过数组获取某一个合约,然后用这个合约本身的方法读取数据并返回
return simpleStorage.review();
//写法2:支持连写
return simpleStorageArray[_index].review();
}
}
继承和重写
继承合约有父合约的所有方法和属性
继承一个合约:使用
is xxxx//SPDX-License-Identifier:MIT
pragma solidity ^0.8.0;
import "./SimpleStorage.sol";
contract ExtraStorage is SimpleStorage{
}
重写方法:在父合约方法中添加
virtual 修饰符 ,在子合约方法中添加 override 修饰符 //父合约中的方法
function saveNumber (int8 _number) public virtual{
number = _number;
}
//重写方法
function saveNumber (int8 _number) public override {
number = _number + 5;
}
完整的继承代码
//SPDX-License-Identifier:MIT
pragma solidity ^0.8.0;
import "./SimpleStorage.sol";
contract ExtraStorage is SimpleStorage{
function saveNumber (int8 _number) public override {
number = _number + 5;
}
}

浙公网安备 33010602011771号