我刚刚开始使用 Solidity。对于这个问题,我认为如果我首先陈述我对继承的理解很有用:如果合同 B 继承自合同 A(即在 contractB.sol 我们有
contract B is A {...
}
那么合约 B 将可以访问合约 A 的功能。
另外,据我了解,如果我想使用其他人的其他合同中的某些功能,我的代码中会包含以下内容:
contract someoneElsesInterface {
function someFunction() returns(something) }
contract myContract {
someoneElsesInterface someoneElsesContract = someonElsesInterface(address);
value = someoneElsesContract.someFunction();
}
我在尝试实施 ERC721 标准时出现了困惑。首先,我必须将 erc721.sol 文件保存在我的目录中;该文件包含
contract ERC721 {
event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
function balanceOf(address _owner) external view returns (uint256);
function ownerOf(uint256 _tokenId) external view returns (address);
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
function approve(address _approved, uint256 _tokenId) external payable;
}
然后在一个单独的文件中,我必须继承ERC721合约,然后定义balanceOf、ownerOf、transferFrom、approve这四个函数的内容;以及发出 Transfer 和 Approve 事件。所以以下内容:
contract myContract is ERC721 {
function balanceOf...
function ownerOf...
function transferrFrom...
...
}
这是我不明白的:为什么 ERC721 不是从 myContract 继承的,因为我们在 myContract 中定义函数,并像上面的示例一样在 ERC721 中声明函数名称和返回值?当我们已经在 myContract 中定义了所有功能内容时,ERC721 合约和让 myContract 继承自 ERC721 的意义何在?在前端工作时,我是从 myContract 还是从 ERC721 调用函数?
我希望我的问题很清楚,如果不是,我可以在评论中澄清。预先感谢您的回复。