Interface

Ett interface Àr en abstrakt typ. Det Àr för att den definerar en uppsÀttning metoder utan att implementera dem, d.v.s, abstrakta metoder.

Ett interface Àr ingen klass och man kan inte instansiera ett interface.

En klass som implementerar interfacet mÄste implementera alla abstrakta metoder som finns i interfacet.

NÀr vi deklarerar variabler anger vi deras typ. För referensvariabel anvÀnds klass eller interfacenamn som typ.

Exempel

Antag att man i en program hanterar djur. Alla djur lÄter och sÄ man vill vara sÀker pÄ att de har en metod sound().

Vi kan lösa det genom att skapa ett interface Djur med en abstrakt metod sound() och lÄter klasserna Hund och Katt implementera interfacet med nyckelordet implements.

interface Djur {
    void sound();  // Alla klasser som implementerar detta mÄste ha denna metod
}
 
class Hund implements Djur {
    @Override
    public void sound() { // Klass Hund implementerar metoden
        System.out.println("Hunden skÀller: Voff voff!");
    }
}
 
class Katt implements Djur {
    @Override
    public void sound() { // Klass Katt implementerar metoden
        System.out.println("Katten jamar: Mjau mjau!");
    }
}

classDiagram
class Djur 
<<interface>> Djur
Djur : sound()
class Hund
class Katt
Hund : sound()
Katt : sound()

Djur <|.. Hund
Djur <|.. Katt

En annan lösning Àr att skapa en gemensam superklass med en abstrakt metod ljud() men Hund och Katt har inga gemensamma metoder och attribut som kan flyttas upp till superklassen och dÀrför Àr det onödigt.

Deklarera Interface

Implementera flera Interface

En klass kan implementera flera interface men kan endast Àrva frÄn en klass.

public class Hund extends Canis implements Djur, Varelse {
  ... //hÀr implementeras allt i klassen Canis och interface Djur och Varelse
}

Personlig Notis

Jag har undrat varför man behöver interface om de fungerar typ endast som en mall. Det som jag har kommit fram till Àr att interface inte Àr sÄ anvÀndbar om man gör smÄ projekt sjÀlv. Men om jag jobbar pÄ samma projekt med 10+ personer och det finns tusentals rader kod sÄ vill jag att alla mÄste följa en mall. DÄ Àr det kompilatorn som ser till att vi jobbar som vi ska.