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.
EventListenerComparableList, Set, MapIteratorMå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. )