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.
public interface MyInterface { public void aMethod(int i); } public class MyClass implements MyInterface { public void aMethod(int i) { ... } public void foo() { ... } ... }
MyInterface x = new MyClass();
Korrekt eftersom MyClass
implementerar MyInterface
x.aMethod(37);
Korrekt eftersom aMethod()
deklareras i MyInterface
x.foo();
Ej korrekt eftersom metoden foo()
inte deklareras i MyInterface
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 ) { ... } }
Dessa exempel kommer att diskuteras senare i kursen. Du kan slå upp dem i Javas API om du lära mer om dem nu.
EventListener
Comparable
List
, Set
, Map
Iterator
Många bibliotek innehåller både ett interface och en abstrakt klass som implementerar gränssnittet.
Exempel: Collection
och AbstractCollection
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. )