# Interface
## 什么是 interface ?
Interfaces 和抽象合约比较类似,但是他们不能实现任何功能。通过定义好的 interface 我们可以在不清楚目标合约具体实现方式的情况下,调用目标的合约
## 如何定义 interface ?
“`solidity
interface Country {
// 定义接口中的方法和返回值
}
“`
## interface 中不能做什么 ?
– 接口中不能定义 state 变量(包括 constants)
– 不能继承
– 不能有构造函数(constructor)
– 不能实例化一个 interface
– 不能实现接口中的方法
– 接口中的方法不能定义为私有或者内部方法,所有的方法必须定义为外部方法(external)
## 举个例子
“`solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title Counter
* @notice 目标合约
*/
contract Counter {
uint public count;
// count值递增
function increment() external {
count += 1;
}