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;  
    }
}
posted @ 2023-03-06 17:49  Furaooooo  阅读(18)  评论(0)    收藏  举报