Interfaces - Ausgabe von Set funktioniert nicht!

Status
Nicht offen für weitere Antworten.

Sindbad1983

Top Contributor
Hi!

Ich möcht ein bissl das Handhaben mit Interfaces üben!
Hat jemand ein ganz einfaches Beispiel für mich, damit ich die Funktionalität eines Interfaces kennen lerne!??!
Das wär spitze!
Danke!
ciao,Tommy
 

L-ectron-X

Gesperrter Benutzer
Eine typische Anwendung: Schreibe einen Frame und implementiere das WindowListener-Interface und überschreibe die Methoden.
Aber wirklich interessant und lehrreich sind die Klassen des Java Collection Frameworks. Dort wird reger Gebrauch von Interfaces gemacht, die die Leistungsfähigkeit einer Klasse enorm steigern bzw. verändern können.
Wichtig zu wissen ist dabei, dass jede Interface-Implementierung in einer Klasse, diese automatisch auch zu einem Typ des Interfaces werden lässt.
 
B

bygones

Gast
mein lieblingsbeispiel ist das gute alte Comparable Interface... Sobald du eine Klasse sortieren lassen willst (von einem SortedSet oder z.b. über das Collections Framework, Arrays oder was auch immer) - stehen die Sortier vor dem problem:

"Mhm - wir bekommen irgendein Objekt, das kann alles sein... Woher soll ich wissen wann eins von den Dingern größer ist als das andere ?"

und da kommt das interface im spiel. Alle Sortierer ist es gelinde gesagt sch*** egal was für ein Objekt sie bekommen, solange es das Comparable interface implementiert. Denn dann können sie die methode compareTo aufrufen und wissen dann ob ein Objekt kleiner ist als ein anderes...

Interfaces sind Schnittstellen die deiner Klasse ein ganz bestimmtes Verhalten verleihen
 
U

user

Gast
Ein interface ist wie eine Abstrakte Klasse, jedoch ohne Konstruktur. Ein einfaches Beispiel willst du haben , na denn


Code:
interace Test{
 int Methode();
}

class Main implements Test{
  int Methode { return 0; }
}

Wie schon gesagt, das Collection Framework ist eine echt klasse Sache, beschäftige dich damit....
 
B

bygones

Gast
user hat gesagt.:
Ein interface ist wie eine Abstrakte Klasse, jedoch ohne Konstruktur.
nicht ganz - in einer abstrakten Klassen können method bodys (deutsches Wort ?) definiert werden, in interfaces net
 

Sky

Top Contributor
user hat gesagt.:
Ein interface ist wie eine Abstrakte Klasse, jedoch ohne Konstruktur.

Also, das stimmt ja nicht so ganz! Ein Interface ist viel mehr eine Schnittstelle (so steht es auch in jedem Wörterbuch).

Der Vorteil eines Interfaces ist, dass Du wirklich nur die Schnittstelle kennen musst und Dir die eigentliche Klasse, die dahinter steckt egal sein kann.
Das "Comparable"-Interface ist dafür auch wirklich ein sehr gutes Beispiel: Es ist wirklich vollkommen egal, um welche Klassen es sich handelt, mit Hilfe des Interface kann man immer über die gleiche Methode (nämlich "compareTo") zwei Objekte miteinander vergleichen.
 

Sky

Top Contributor
foobar hat gesagt.:
Ausserdem kann man, im Gegensatz zu abstrakten Klassen, Interfaces instanzieren.

Davon habe ich ja noch nie was gehört... wie soll denn das gehen??

Code:
InterfaceTest myInterface = new InterfaceTest();

führt auf jeden Fall zu einer Fehlermeldung!


Und wenn Du folgendes meinst:

Code:
InterfaceTest myInterface = new ClassTest(); // NOTE: ClassTest implements InterfaceTest !

Dann hast Du eine Instanz von 'ClassTest' und nicht von 'InterfaceTest'.
 

Sindbad1983

Top Contributor
ok..ich werd jetzt mal was mit compareTo programmieren
leider hab ich da immer ein bissl wenig Phantasie...
kann mir jemand ein kónkretes Beispiel geben...von mir aus auch mit compareTo..!??..oder was anderes mit Interfaces! Ihr habt damit einfach um Welten mehr Erfahrung als ich!
Das wär super!
Danke!
 

Sindbad1983

Top Contributor
InterfaceTest myInterface = new InterfaceTest();

na das ist klar..das geht sicher nicht!

Denn es können keine Objekte eines Interfaces erzeugt werden!
Es können aber Variblen eines Interfaces deklariert werden!

Code:
Writer w=new ClassThatImplementsWriter();
 
B

bygones

Gast
sky80 hat gesagt.:
foobar hat gesagt.:
Ausserdem kann man, im Gegensatz zu abstrakten Klassen, Interfaces instanzieren.
Davon habe ich ja noch nie was gehört... wie soll denn das gehen??
wäre mir auch neu....
sky80 hat gesagt.:
Und wenn Du folgendes meinst:
Code:
InterfaceTest myInterface = new ClassTest(); // NOTE: ClassTest implements InterfaceTest !
Dann hast Du eine Instanz von 'ClassTest' und nicht von 'InterfaceTest'.
das geht dann aber auch mit abstrakten Klassen....
 
B

bygones

Gast
Sindbad1983 hat gesagt.:
kann mir jemand ein kónkretes Beispiel geben...von mir aus auch mit compareTo..!??..oder was anderes mit Interfaces!
du hast eine Klasse
Code:
public class MyClass implements Comparable<MyClass> {
  private String aString;
  private int whatEver;

  // methoden und konstruktoren

  // compareTo methode aus dem interface Comparable
  public int compareTo(MyClass otherClass) {
    return aString.compareTo(otherClass.aString):
  }
}
das ist java5 syntax... vor java5 heißt es implements Comparable und die methode compareTo hat als Argument den Typ Object.

Die Klasse MyClass ist nun "comparable", d.h. man kann sie mit anderen objekten der klasse vergleichen. der vergleich beruht auf der instanzvarible aString, einem String, der ebenso das interface implementiert.... also kann man auch dort compareTo aufrufen...

nun kannst du das alles z.b. in einem TreeSet einbringen
Code:
Set<MyClass> sortedSet = new TreeSet<MyClass>();
sortedSet.add(new MyClass("derString", 2));
// und noch andere add operationen
das TreeSet sortiert dir deinen Objekte nun anhand der compareTo methode der klasse... das geht ohne probleme, da deine Klasse Comparable implementiert....
 

Sindbad1983

Top Contributor
also geht das z.B.

ich hab jetzt 10 Namen und möcht diese sortieren:

z.B.
Code:
sortedSet.add(new MyClass("Franz", 2)); 
sortedSet.add(new MyClass("Roland", 3)); 
sortedSet.add(new MyClass("Walter", 4)); 
sortedSet.add(new MyClass("Hannes", 5)); 
.
.

und diese Namen sortiert er mit dann oder wie?und mit compareTo vergleicht er, hm?

Wozu brauch ich dann die int-Zahl? Ist das die Position? ???:L im Baum?

und mit z.B.
Code:
public boolean contains(Object o)
kann ich dann schaun, ob der Name schon drinnen ist, oder?
 
B

bygones

Gast
die zahl ist für den vergleich unwichtig.. sollte nur ein bsp sein, dass du jegliches objekt (egal was für infos es hat) "missbrauchen" kannst.

Beim MyClass Beispiel sortiert er nach dem namen. Das Sortieren basiert auf der compareTo methode. diese liefert ja einen int wert zurück (negativ - objekt ist kleiner als parameter, 0 - beide sind gleich, positiv - objekt ist größer).

das mit der contains ist ne andere Sache, die basiert auf der equals methode. D.h. wenn dieser Vgl wichtig ist sollte diese Methode (und am besten die Methode hashCode) überschrieben werden....

compareTo sagt dir größer, kleiner. equals sagt gleich oder nicht gleich
 

Sky

Top Contributor
deathbyaclown hat gesagt.:
Code:
public class MyClass implements Comparable<MyClass> {
  private String aString;
  private int whatEver;

  // methoden und konstruktoren

  // compareTo methode aus dem interface Comparable
  public int compareTo(MyClass otherClass) {
    return aString.compareTo(otherClass.aString):
  }
}

Um das mal zu verdeutlichen: Du kannst die 'compareTo' ganz nach deinen Bedürfnissen anpassen. So könntest Du z.B. auch nach Länge der Strings (oder nach ganz anderen Kriterien...) sortieren (bitte nicht nach der Sinnhaftigkeit fragen... :wink: ):

Code:
// compareTo methode aus dem interface Comparable
public int compareTo(MyClass otherClass) {
  int iMyLen = aString.length();
  int iOtherLen = otherClass.aString.length();
  return ( iMyLen - iOtherLen );
}
 
B

bygones

Gast
und das auch noch mit dem int multiplizieren ;) um weiter die Sinnhaftigkeit ad absurdum zu führen *g
 

Sindbad1983

Top Contributor
Code:
class Person implements Comparable{

	String name;

	public Person(String name){
	this.name=name;
	}

	public int compareTo(Object obj){
		Person other=(Person) obj;
		int result=name.compareTo(other.name);
		return result;
	}
}

Code:
import java.util.*;

class InterfaceTest{

public static void main(String [] args){

 	Set list=new TreeSet();
	list.add(new Person("Roland"));
	list.add(new Person("Thomas"));

	System.out.println(list);
}
}

Brauch ich da jetzt wieder ne toString-Methode? oder hab ich wiedermal einen anderen Denkfehler drin? :autsch:
 
B

bygones

Gast
fürs sortieren ist die toString Methode unwichtig... sobald du aber dein Set ausgibst - da brauchst du sie....

compareTo = größer, kleiner
equals (hashCode) = gleich, ungleich
toString = anzeige des objekts
 

Sindbad1983

Top Contributor
ist das der einzige Fehler, den ich drinnen hab?
Gehts dann mit einer toString-Methode?
aber trotzdem versteh ich das nicht, denn mit return result wird ja eh die Zahl zurückgegeben, oder?
 
B

bygones

Gast
siehe meinen posts... toString ist nur dafür zuständig, wie ein Objekt angezeigt wird (z.b. per System.out.println()).

die compareTo liefert einen int zurück der zeigt ob ein objekt größer oder kleiner ist (steht auch in der API !)
 

Sindbad1983

Top Contributor
ok..ich habs!

War gar nicht so schwer! :###
Wie immer im nachhinein! :oops:
die toString-Methode :applaus:

Code:
class Person implements Comparable{

	String name;
	int result;

	public Person(String name){
	this.name=name;
	}
	
	void print(){
		System.out.println(name);
	}

	public int compareTo(Object obj){
		Person other=(Person) obj;
		int result=name.compareTo(other.name);
		return result;
	}
	
	public String toString(){
		return this. name;
	}

}


Code:
public class InterfaceTest{


public static void main(String [] args){

 	List list=new ArrayList();

 	Person a=new Person("Roland");
 	Person b=new Person("Hannes");
 	Person c=new Person("Franz");

 	list.add(a);
 	list.add(b);
 	list.add(c);


	System.out.println(a.compareTo(b));
	System.out.println("Anzahl der Elemente in Set: "+list.size());

		Iterator it=list.iterator();

		while(it.hasNext()){
			System.out.println((Person)it.next());
		}
	

}
}

danke,ciao
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Interfaces von Interfaces macht das noch Sinn? Java Basics - Anfänger-Themen 21
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Wozu dient Interfaces? Java Basics - Anfänger-Themen 6
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
I XML und Interfaces aus anderen Projekten Java Basics - Anfänger-Themen 3
8u3631984 Record - Interfaces Java Basics - Anfänger-Themen 4
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
H Sinn von Interfaces Java Basics - Anfänger-Themen 21
B JaxB und Interfaces? Java Basics - Anfänger-Themen 2
M Funktionale Interfaces Java Basics - Anfänger-Themen 3
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
H Frage zu interfaces Java Basics - Anfänger-Themen 1
J Zweck von Interfaces immer noch nicht klar Java Basics - Anfänger-Themen 3
M Klasse erbt von Interfaces Java Basics - Anfänger-Themen 6
T Interfaces in erbenden Klassen Java Basics - Anfänger-Themen 2
T Abstrakte Klasse und Interfaces Java Basics - Anfänger-Themen 12
H Polymorphie Interfaces und statischer Typ Java Basics - Anfänger-Themen 33
T Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 7
F Exceptions in Interfaces Java Basics - Anfänger-Themen 4
F Interface Warum Interfaces? Java Basics - Anfänger-Themen 5
R interfaces Java Basics - Anfänger-Themen 1
B Interfaces Java Basics - Anfänger-Themen 6
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
D Interface Wieso Aufruf aller Methoden eines Interfaces? Java Basics - Anfänger-Themen 11
J Interfaces? Java Basics - Anfänger-Themen 32
M Erstellung Interfaces....totale Anfängerfrage Java Basics - Anfänger-Themen 16
S Erste Schritte Innere Klassen und Interfaces Java Basics - Anfänger-Themen 2
J Wofür dienen Interfaces ? Java Basics - Anfänger-Themen 1
Hijo2006 Frage zu Interfaces Java Basics - Anfänger-Themen 21
Hacer Interfaces implementieren Java Basics - Anfänger-Themen 7
H Implementierung eines Interfaces erweitern Java Basics - Anfänger-Themen 13
L Via Interfaces unterschiedliche Klassen ansprechen Java Basics - Anfänger-Themen 8
A Verwendung von Interfaces Java Basics - Anfänger-Themen 7
J Interfaces Java Basics - Anfänger-Themen 15
D Frage bzgl. Interfaces Java Basics - Anfänger-Themen 10
D Interface Verständnisprobleme von Interfaces Java Basics - Anfänger-Themen 5
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
S Rollen verändern, Interfaces austauschen wie? Java Basics - Anfänger-Themen 10
K Interfaces/Klassen etc. Java Basics - Anfänger-Themen 6
F Implementierung von Interfaces -> Problem mit main Java Basics - Anfänger-Themen 12
S Verständnisproblem bei Interfaces Java Basics - Anfänger-Themen 6
I Interface Verständnisfrage Interfaces (Bsp.: Enumeration) Java Basics - Anfänger-Themen 2
M Frage zu Generics in Klassen, Abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
O Java Interfaces für andere Programmiersprachen zur Verfuegung stellen? Java Basics - Anfänger-Themen 2
K Interface Generics, Interfaces und Listen - ich bin verwirrt. Java Basics - Anfänger-Themen 7
G Instanzen eines Interfaces erzeugen Java Basics - Anfänger-Themen 7
M Compiler-Fehler Alle Methoden eines Interfaces Implementiert dennoch Fehler Java Basics - Anfänger-Themen 3
V Interface Interfaces und abstrakte Klassen Java Basics - Anfänger-Themen 3
F Best Practice UML/Planung eines Projektes (Klassen, Interfaces, ...) Java Basics - Anfänger-Themen 0
V Vererbung Vererbung, Interfaces und OOP... Java Basics - Anfänger-Themen 10
C Sinn eines Interfaces? Java Basics - Anfänger-Themen 4
A Interface Poymorphismus bei Interfaces Java Basics - Anfänger-Themen 2
Pentalon Eclipse JUNO keine Vorschläge von Methoden bzw. Interfaces der eigenen Klassen Java Basics - Anfänger-Themen 5
R Mehrere Interfaces(Comparable, ...) Java Basics - Anfänger-Themen 2
J Interfaces Abstrakte Klassen Java Basics - Anfänger-Themen 15
D Interfaces und allgemeingültige Methodenaufrufe Java Basics - Anfänger-Themen 6
H Erste Schritte 2 User Interfaces für eine Anwendung Java Basics - Anfänger-Themen 7
S OOP Wann Proxies und Interfaces? Java Basics - Anfänger-Themen 3
M Interface @Inject mit Interfaces? Java Basics - Anfänger-Themen 2
F Interface Unterschied von Attributen und Methoden bei abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
V mehrfachvererbung unter interfaces Java Basics - Anfänger-Themen 10
J Interface Wie funktioniert das mit den Interfaces. Ich verstehe es einfach nicht! :( Java Basics - Anfänger-Themen 15
T Interfaces und Implementierungen Java Basics - Anfänger-Themen 12
S Interface mehrere Interfaces Java Basics - Anfänger-Themen 2
M Vererbung Problem bei Interfaces Java Basics - Anfänger-Themen 8
H Dynamische Bindung mit Interfaces und LinkedList Java Basics - Anfänger-Themen 7
F Interfaces Java Basics - Anfänger-Themen 4
M Frage zu Interfaces Java Basics - Anfänger-Themen 3
N Generics und Interfaces Java Basics - Anfänger-Themen 5
D Abstrakte Klassen und Interfaces als Paramter in Funktionen Java Basics - Anfänger-Themen 3
P OOP Aufruf eines Interfaces Java Basics - Anfänger-Themen 4
N OOP Vererbung von Interfaces Java Basics - Anfänger-Themen 12
S Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 2
D Sinn von Interfaces - Wozu? Java Basics - Anfänger-Themen 9
P Frage zu Interfaces Bsp. Java Basics - Anfänger-Themen 9
A Deklarationen in abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 11
R Adapterklassen vs Interfaces Java Basics - Anfänger-Themen 6
P Interfaces -> eins oder mehrere für eine Anwendung? Java Basics - Anfänger-Themen 9
2 Interfaces, Polymorphie und Methoden. Java Basics - Anfänger-Themen 14
A Obstlager Interfaces Java Basics - Anfänger-Themen 7
K Theor. Frage zu Interfaces Java Basics - Anfänger-Themen 30
T Frage zu Interfaces und Abstrakten Klassen Java Basics - Anfänger-Themen 4
J Interfaces Java Basics - Anfänger-Themen 14
L Interfaces Java Basics - Anfänger-Themen 5
J spiel "Gefangenendilemma" Probleme mit Interfaces Java Basics - Anfänger-Themen 8
H Interfaces in java? Java Basics - Anfänger-Themen 2
A OOP Interfaces mit gleichem Methoden Java Basics - Anfänger-Themen 15
T Interfaces: Braucht man abstrakte Klassen eigentlich noch? Java Basics - Anfänger-Themen 3
S Implementierung gegen Interfaces / List, ArrayList, LinkedList Java Basics - Anfänger-Themen 11
D Interfaces / Schnittstellen Java Basics - Anfänger-Themen 8
I Probleme mit Interfaces Java Basics - Anfänger-Themen 4
K Interfaces "Schreibaufwand" Java Basics - Anfänger-Themen 53
I Interfaces Java Basics - Anfänger-Themen 34
bigbasti Warum genau braucht man Interfaces? Java Basics - Anfänger-Themen 10
A Programmieren gegen Interfaces Java Basics - Anfänger-Themen 4
I Frage zu Collection und List Interfaces Java Basics - Anfänger-Themen 2
7 Interfaces - Aufbau Java Basics - Anfänger-Themen 9

Ähnliche Java Themen


Oben