---
title: "Interfaces"
content_type: tutorial
url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces?language=en"
language: en
container_type: course
container_title: "Intermediate Scripting"
container_url: "https://learn.unity.com/course/intermediate-gameplay-scripting.md?language=en&version=2019.3"
standalone_markdown_url: "https://learn.unity.com/tutorial/interfaces.md?language=en&version=2019.3"
previous_title: "Overriding"
previous_url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/overriding?language=en&version=2019.3"
previous_markdown_url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/overriding.md?language=en&version=2019.3"
next_title: "Extension Methods "
next_url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/extension-methods?language=en&version=2019.3"
next_markdown_url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/extension-methods.md?language=en&version=2019.3"
difficulty: intermediate
duration_minutes: 5
unity_version:
  - "2019.3"
  - "2019.2"
  - "2019.1"
  - "2018.4"
  - "2018.3"
  - "2018.2"
  - "2018.1"
  - "2017.4"
  - "2017.3"
  - "2017.2"
  - "2017.1"
  - "5.x"
  - "4.x"
supported_unity_versions:
  - name: "2021.3"
    url: "https://learn.unity.com/tutorial/interfaces.md?language=en&version=2021.3"
  - name: "2019.3"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=2019.3"
  - name: "2019.2"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=2019.2"
  - name: "2019.1"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=2019.1"
  - name: "2018.4"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=2018.4"
  - name: "2018.3"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=2018.3"
  - name: "2018.2"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=2018.2"
  - name: "2018.1"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=2018.1"
  - name: "2017.4"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=2017.4"
  - name: "2017.3"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=2017.3"
  - name: "2017.2"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=2017.2"
  - name: "2017.1"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=2017.1"
  - name: "5.x"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=5.x"
  - name: "4.x"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/interfaces.md?language=en&version=4.x"
last_updated: "2026-08-04T14:21:38.000Z"
---

# Interfaces

Learn what interfaces are in C#, how to declare them, and how to implement and use them in classes.

 How to create interfaces and implement them in classes.

## 1. Interfaces

[Video](https://connect-mediagw.unity.com/h1/20220110/videos/c977e571-9428-477d-b30b-93d5f5c4ddbc_U_Intermediate_10_Interfaces.mp4)

**Interfaces**

```csharp
using UnityEngine;
using System.Collections;

//This is a basic interface with a single required
//method.
public interface IKillable
{
    void Kill();
}

//This is a generic interface where T is a placeholder
//for a data type that will be provided by the 
//implementing class.
public interface IDamageable<T>
{
    void Damage(T damageTaken);
}
```

**Avatar Class**

```csharp
using UnityEngine;
using System.Collections;

public class Avatar : MonoBehaviour, IKillable, IDamageable<float>
{
    //The required method of the IKillable interface
    public void Kill()
    {
        //Do something fun
    }

    //The required method of the IDamageable interface
    public void Damage(float damageTaken)
    {
        //Do something fun
    }
}
```
