Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Java Programmierung: Interfaces - was ist das? (https://www.delphipraxis.net/66188-java-programmierung-interfaces-ist-das.html)

alleinherrscher 26. Mär 2006 13:30


Java Programmierung: Interfaces - was ist das?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!

Ich versuche gerade etwas Java zu lernen, aber komme gerade nicht weiter: Es geht um interfaces.

Ich habe das hier aus einer Vorlesung von unserem Prof, aber werde nicht richtig schlau daraus: (siehe Dateianlage)

Erstmal verstehe ich nicht, wofür man überhaupt Interfaces braucht. Und als zweites verstehe ich noch nicht, wie man sie umsetzt...kann mir da jemand von euch weiterhelfen?

Grüße,
Alleinherrscher

Dust Signs 26. Mär 2006 13:40

Re: Java Programmierung: Interfaces - was ist das?
 
Interfaces sind Klassen, deren Methoden zwar definiert, aber nicht implementiert sind - ein Interface ist also eine Art Grundgerüst; und eine Klasse, die dann das Interface vollständig implementiert, kann dann verwendet werden. Ein Interface hat den Zweck, dass du bei einer Klasse eine bestimmte Funktionalität voraussetzen kannst; du kannst also von einem übergebenen Objekt immer erwarten, dass es über bestimmte Methoden mit definierten Parametern verfügt.

Dust Signs

Chewie 26. Mär 2006 13:47

Re: Java Programmierung: Interfaces - was ist das?
 
Ein Interface ist sehr ähnlich zu einer abstrakten Klasse.
Sprachen wie C++, die Mehrfachvererbung unterstützen, brauchen keine Interfaces, sie können ja von beliebig vielen (auch abstrakten) Klassen erben - bei Sprachen, die keine Mehrfachvererbung beherrschen, geht das nicht. Deswegen benutzt man Interfaces: Eine Klasse kann beliebig viele Interfaces implementieren, so kann sie zwar keine Funktionalität erben, aber sie erscheint dennoch polymorph.

alleinherrscher 26. Mär 2006 13:50

Re: Java Programmierung: Interfaces - was ist das?
 
Danke dir soweit!
Das heißt in ein Interface kommen nur Methoden rein, keine Attribute etc?

meinetwegen hab ich folgendes:

public interface IntList {
void insert (int value);
boolean contains (int value);
void delete (int value);
}


D.h. wenn ich n neues Objekt "IntList" erstelle, hat das die o.a. Methoden...
gut, wenn ich jetzt diese Methoden "umsetzten" will, kann ich irgendeine Klasse schreiben (name etc. egal) und dann "implements IntList" dranschreiben?

also so:

class IntArray implements IntList { ...}

richtig?

Da müssen dann auf jedenfall alle Methoden, die unter IntList angegeben sind, drin auftauchen?!

Grüße und danke nochmal!

Dust Signs 26. Mär 2006 13:52

Re: Java Programmierung: Interfaces - was ist das?
 
Genau. Ein Interface hat den Vorteil, dass nicht vorgegeben ist, wie die Methoden zu implementieren sind, nur, dass sie vorhanden sein müssen.

Dust Signs

mkinzler 26. Mär 2006 14:06

Re: Java Programmierung: Interfaces - was ist das?
 
Zitat:

Ein Interface ist sehr ähnlich zu einer abstrakten Klasse.
nur das es vollständig abstrakt ist und keine Attribute besitzt. Dieses Konzept wird übrigens auch von Delphi und C# verwendet.

alleinherrscher 26. Mär 2006 14:18

Re: Java Programmierung: Interfaces - was ist das?
 
okay, das Prinzip hab ich jetzt glaube ich verstanden, auch wenn ich sowas vorher nie zum programmieren gebraucht hab... :) man lernt ja nie aus...


ich hab jetzt folgendes gemacht um das mal zu testen:

Diesen Quellcode (also das interface selber) in einer Datei IntList.java gespeichert:

public interface IntList {
void insert (int value);
boolean contains (int value);
void delete (int value);
}


Eine neue Datei "IntArray.java" erstellt mit dem implementieren Code von IntList:



class IntArray implements IntList {
int[] elems; int count=0;

public IntArray (int maxNum){
elems=new int [maxNum];
}

public void insert(int value){
if (count<elems.length){
elems[count]=value;
++count;
}else System.err.println("Array is full");
}
public boolean contains(int value){
return getPosition(value)>=0;
}
private int getPosition (int value){
int p=0;
for (p=0; p<count;++p)
if (elems[p]==value) return p;
return -1;
}
public void delete(int value){
int p=getPosition(value);
if(p>=0){
--count;
while (p<count){
elems[p]=elems[p+1];
++p;
}
}
}
}
}


Jetzt bekomme ich leider beim compilieren von "IntArray.java" folgenden Fehler (2mal):

IntArray.java:40: 'class' or 'interface' expected
(in der letzten Zeile)

Was ist da jetzt schiefgegangen?

Dust Signs 26. Mär 2006 14:22

Re: Java Programmierung: Interfaces - was ist das?
 
Ich kann zwar kein Java, aber ich vermute mal, dass es
Code:
public class
heißen sollte und nicht nur class.

Dust Signs

alleinherrscher 26. Mär 2006 14:26

Re: Java Programmierung: Interfaces - was ist das?
 
UNF! Ich bin doof...war nur n dummer tippfehler...hatte nix mit dem public zu tun...trotzdem danke! Jetzt tuts *froh sei*


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz