# 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;

}