接口
如果不知道合约源码,或者合约源码太大不好直接导入到项目。但是可以拿到接口。通过接口调用很方便
接口类似于抽象合约,但是它们不能实现任何函数。还有进一步的限制:
- 无法继承其他合约,不过可以继承其他接口。
- 所有的函数都需要是 external
- 无法定义构造函数。
- 无法定义状态变量。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
interface ICounter {
function count() external view returns (uint);
function inc() external;
}
contract CallInterface {
uint public count;
function examples(address _counter) external {
ICounter(_counter).inc();
count = ICounter(_counter).count();
}
}
就像继承其他合约一样,合约可以继承接口。接口中的函数都会隐式的标记为 virtual ,意味着他们会被重写