Interface

Sven-Olof Nyström
OOP med Java våren -25
Informationsteknologi
Uppsala Universitet

Interface

Interface i Java påminner ytligt om abstrakta klasser. Som jag redan har påpekat bör du ha arbetat lite med abstrakta klasser innan du studerar detta snarlika begrepp.

Interface:

Det är egentligen ganska enkelt, men det bryter lite mot vad du har sett tidigare så du måste vara uppmärksam.

Interface, första exempel

public interface MyInterface {
   public void aMethod(int i);
}
public class MyClass implements MyInterface {
   public void aMethod(int i) {
   ...
   }
   public void foo() { ... }
...
}

Första exempel, användning

Interface, regler

Interface, mer exempel

Ett gränssnitt som beskriver geometriska figurer.

interface GeometricShape {
  public void draw( Graphics g);
  public void move( int dx, int dy );
}

class Square implements GeometricShape {
   public void draw ( Graphics g ) { ... }
   public void move( int dx, int dy ) { ... }
}

class Rectangle implements GeometricShape {
   public void draw ( Graphics g ) { ... }
   public void move( int dx, int dy ) { ... }
}

Exempel på interface i Javas API

Dessa exempel kommer att diskuteras senare i kursen. Du kan slå upp dem i Javas API om du lära mer om dem nu.

Många bibliotek innehåller både ett interface och en abstrakt klass som implementerar gränssnittet.

Exempel: Collection och AbstractCollection

Mera information

Se denna diskussion i Java tutorial om abstrakta klasser:

http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

och denna om interface:

http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html

Senaste upplagan av Skansholms bok (åttonde upplagan) diskuterar abstrakta klasser i avsnitt 10.7 och interface i 10.8. (Skansholm har stuvat om i kapitel 10, så om du läser en äldre bok får du titta i innehållsförteckningen. )