Skip to content

Interfaces

Interfaces define a contract that classes must follow, specifying a set of methods and properties that implementing classes must provide. They enable loose coupling and help create more maintainable and flexible code.

Defining Interfaces

An interface declaration creates a contract that defines what members a class must implement. This establishes a common set of functionality across different classes.

csharp
public interface IShape
{
    double GetArea();
    double GetPerimeter();
}

Implementing Interfaces

Classes that implement an interface must provide concrete implementations for all members defined in the interface. This ensures consistency across different implementations.

csharp
public class Circle : IShape
{
    public double Radius { get; set; }
    
    public double GetArea()
    {
        return Math.PI * Radius * Radius;
    }
    
    public double GetPerimeter()
    {
        return 2 * Math.PI * Radius;
    }
}

Multiple Interface Implementation

C# supports implementing multiple interfaces, allowing classes to fulfill multiple contracts. This provides flexibility in designing class hierarchies and behavior.

csharp
public interface IDrawable
{
    void Draw();
}

public class Circle : IShape, IDrawable
{
    // IShape implementation
    public double GetArea() => Math.PI * Radius * Radius;
    public double GetPerimeter() => 2 * Math.PI * Radius;
    
    // IDrawable implementation
    public void Draw()
    {
        Console.WriteLine("Drawing circle");
    }
}