S
Hi. Interfaces geben dir die Möglichkeit Code zu schreiben, der nur auf die Schnittstelle angewiesen ist, die durch ein Interface definiert wird. Was für eine Klasse, das dahinterstehende Objekt hat, ist völlig egal.
in deinem Beispiel müßte man ansosnten die Funktion test() 2 mal überladen, was natürlich ungeschickt wäre:
static double testForGen1(Generator1 generator, int oberGrenze, int
anzahl) {
int[] field=new int[anzahl];
for (int i = 0; i < anzahl; i++)
{
field[i]=generator.nextInt(oberGrenze);
}
for (int i = 0; i < anzahl; i++)
{
System.out.println(field[i]);
}
return 0;
}
static double testForGen2(Generator2 generator, int oberGrenze, int
anzahl) {
int[] field=new int[anzahl];
for (int i = 0; i < anzahl; i++)
{
field[i]=generator.nextInt(oberGrenze);
}
for (int i = 0; i < anzahl; i++)
{
System.out.println(field[i]);
}
return 0;
}
der Funktionscode wäre völlig gleich. Nur weil es 2 verschiedene Klassen sind müßte man dann das ganze 2 mal schreiben. Durch das Interface kann man in seinem Programm ausdrücken, daß diese beiden Klassen ein Konzept (nämlich die
Methode nextInt() ) gemeinsam haben und in dieser Sache austauschbar sind..
Hoffe, das war ein wenig verständlich, wenn du immer noch nicht durchblickst lies dir einfach mal ein Java-Buch/Tutorial über das Thema durch
cu