Interfaces: Syntax of Interfaces, Implementation of Interfaces and Inheritance in c# code example

Example 1: what is inteface and how to use in c#

interface IShape
{
    double X { get; set; }
    double Y { get; set; }
    void Draw();
}

class Square : IShape
{
    private double _mX, _mY;

    public void Draw() { ... }

    public double X 
    { 
        set { _mX = value; }
        get { return _mX; }  
    }

    public double Y 
    {
        set { _mY = value; }
        get { return _mY; }
    }
}

Example 2: c# interfaces

public class Car : IEquatable<Car>
{
    public string Make {get; set;}
    public string Model { get; set; }
    public string Year { get; set; }

    // Implementation of IEquatable<T> interface
    public bool Equals(Car car)
    {
        return (this.Make, this.Model, this.Year) ==
            (car.Make, car.Model, car.Year);
    }
}