Introduction to Interfaces in C#

Interfaces are a fundamental concept in C# and object-oriented programming. In this guide, you'll learn about interfaces, how to define them, and how they provide a powerful way to achieve polymorphism and code reusability.

What is an Interface?

An interface is a contract that defines a set of methods and properties. It specifies what a class implementing the interface must provide, but it doesn't contain any implementation. Interfaces enable you to achieve polymorphism by allowing different classes to implement the same interface.

Defining an Interface

To define an interface in C#, you use the `interface` keyword. Here's the basic syntax:

public interface IExampleInterface
// Method signatures
void Method1();
int Method2(string parameter); // Properties
string Property1 { get; set; }
int Property2 { get; }

Implementing an Interface

A class can implement one or more interfaces by using the `:` symbol. It must provide concrete implementations for all the methods and properties defined in the interface.

Example of implementing an interface:

public interface IDrawable
void Draw();
public class Circle : IDrawable
public void Draw()
Console.WriteLine("Drawing a circle.");
public class Square : IDrawable
public void Draw()
Console.WriteLine("Drawing a square.");
IDrawable shape1 = new Circle();
IDrawable shape2 = new Square();
shape1.Draw(); // Calls Circle's Draw method
shape2.Draw(); // Calls Square's Draw method

Benefits of Interfaces

Interfaces offer several benefits in C#:

  • Enforce a contract that ensures classes implementing the interface provide specific functionality.
  • Enable polymorphism, allowing different classes to be treated uniformly when they implement the same interface.
  • Promote code reusability by defining a common set of methods and properties that multiple classes can use.


Interfaces are a powerful concept in C# that enable polymorphism, code reusability, and strong contracts between classes. By defining interfaces and implementing them in your classes, you can create more flexible and maintainable code.

Practice using interfaces in your C# programs to leverage their benefits and create versatile and extensible software. As you continue your programming journey, you'll explore more advanced uses of interfaces and design patterns that rely on this essential concept.