Interfaces är ett kraftfullt verktyg i C# som ger oss möjlighet att skapa flexibla och återanvändbara komponenter i våra program. Genom att använda interfaces kan vi implementera polymorfism och separera implementation och användning av komponenter.

Beskrivning

Interfaces är en typ som definierar en uppsättning metoder, egenskaper och händelser som en klass kan implementera. En klass som implementerar ett interface måste implementera alla dess medlemmar. Därför säger man att Interfaces är kontrakt.

Exempel

Låt oss titta på ett exempel där vi skapar ett interface som heter IAnimal:

interface IAnimal
{
    string Name { get; set; }
    void Eat();
    void Sleep();
    void Shit();
}

I detta exempel har vi ett interface som heter IAnimal. Vi har också tre metoder och en property. Observera att Interfaces inte kan ha fält, men de kan ha properties!

Observera att interfaces som regel alltid har ett namn som börjar på I och slutar helst på able. I vårt fall slutar det inte på able för att IAnimalable låter bara dumt, men ett interface som deklarerar en metod som heter Calc(int[]) skulle kunna heta ICalculable. Usch vilket dåligt exempel, men ja, du förstår tanken.

Vi provar nu med att skapa en katt.

class Cat : IAnimal
{
    public string Name { get; set; }

    public void Eat()
    {
        Console.WriteLine($"{Name} is eating.");
    }

    public void Sleep()
    {
        Console.WriteLine($"{Name} is sleeping.");
    }

    public void Shit()
    {
        Console.WriteLine($"{Name} is taking a shit.");
    }
}

I den här koden har vi skapat en klass Cat som implementerar IAnimal-gränssnittet. Klassen har en egenskap Name som kan sättas och hämtas. Vi har också implementerat de tre metoderna Eat(), Sleep() och Shit() enligt gränssnittets krav.

Om någon av metoderna saknas eller har en annan metodhuvud kommer programmet inte att kompileras då den inte uppfyller kontraktet.


Table of contents


Till toppen

Licens: Apache 2.0 | © 2023 Marcus Medina, Campus Mölndal. Alla rättigheter förbehållna.
Du får använda och modifiera detta verk enligt villkoren i Apache License, Version 2.0. Du får inte använda detta verk för kommersiella ändamål utan tillstånd från upphovsmannen.