Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Sonstige Fragen » Unterschied Interfaces und abstrakte Klassen? » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Unterschied Interfaces und abstrakte Klassen?
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Erstsemester
unregistriert
Unterschied Interfaces und abstrakte Klassen? Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hey :-)

Ja, die Frage ist:

Was ist der Unterschied zwischen Interfaces und abstrakten Klassen?



Meine Ideen:
Von abstrakten Klassen kann ja kein Objekt erzeugt werden. Interface heißt Schnittstelle.


Vielen Dank ;-)
24.01.2015 05:40
Erstsemester
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Auch steige ich nicht ganz durch, wie eigentlich Interfaces funktionieren. Habe herausgefunden, dass in Interfaces abstract vor Methoden nicht explizit angegeben werden muss.

Interfaces könnten doch zum Beispiel benutzt werden, wenn ich eine Superklasse Ton habe. Als Subklasse könnte Mensch, Tier sein.

Mensch würde noch von der Klasse Ton erben, Tier allerdings nicht mehr ( Hier wären dann Interfaces notwendig?)
24.01.2015 05:58
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Die Frage kommt mir irgendwie bekannt vor. Karlito hat sich auch schon beantwortet, was mir Schreibarbeit abnimmt smile

__________________
Syntax Highlighting fürs Board (Link)
24.01.2015 08:42 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Erstsemester
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Oh sorry, das war nicht meine Absict, die gleiche Frage zweimal zu stellen. Das hatte ich vollkommen vergessen :-)
24.01.2015 09:19
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Darfst sie auch gerne ein 3. Mal stellen, wenn es dir immer noch unklar ist Augenzwinkern

__________________
Syntax Highlighting fürs Board (Link)
24.01.2015 09:22 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Erstsemester
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ok, ich blicke die Interfaces trotzdem nicht.

Die folgende Aufgabe:

Sortieren Sie eine Schublade mit ca. 10 Socken der Größe nach. Socken sollen eine Farbe (String)
und eine Größe (int) besitzen. Außerdem haben Socken das Interface Sortierbar implementiert, das
folgendermaßen aussieht:
interface Sortierbar
{
public int istGroesser(Sortierbar element);
}
Die Methode ist Groesser() gibt eine negative Integer-Zahl, null oder eine positive Integer-Zahl zurück,
je nachdem, ob das aktuelle Objekt kleiner, gleich oder größer als das angegebene Objekt ist.
Als Sortieralgorithmus verwenden Sie Bubblesort. Schreiben Sie hierzu Ihr Programm aus einer früheren
Übungsaufgabe allgemein für Objekte vom Typ "Sortierbar" um.

Der Sortieralgorithmus:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
import java.util.Arrays;


Ich weiß nicht einmal, was jetzt hier in ein Interface soll und was sonst gemacht werden soll, sprich mir fehlt der Ansatz  :(
public class BubbleSort
{
	public static void main(String[] args) 
	{
		int[] werte = { 5,124,6,6,76,8 };
		for (int i = 0; i < werte.length; i++) 
		{
			for (int j = 0; j < werte.length - 1; j++) 
			{
				if (werte[j] > werte[j + 1])
				{
					int speicher;
					speicher = werte[j];
					werte[j] = werte[j + 1];
					werte[j + 1] = speicher;
				}
			}
		}
		System.out.println(Arrays.toString(werte));
	}
}
24.01.2015 09:30
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Schau mal, ob du es so verstehst, wenn nicht, schreibe ich noch ein paar Zeilen dazu. Habe auch Polymorphie eingebaut.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
import java.util.Arrays;

public class Main {

	public static void main(String[] args) {
		Sortierbar[] objekte = { new Socke(42, "rot"),
				new Schuh(39, "Turnschuh"), new Socke(45, "verwaschen") };
		for (int i = 0; i < objekte.length; i++) {
			for (int j = 0; j < objekte.length - 1; j++) {
				if (objekte[j].istGroesser(objekte[j + 1]) > 0) {
					Sortierbar speicher = objekte[j];
					objekte[j] = objekte[j + 1];
					objekte[j + 1] = speicher;
				}
			}
		}
		System.out.println(Arrays.toString(objekte));
	}
}

public interface Sortierbar {
	public int istGroesser(Sortierbar element);

	abstract int liefereGroesse();
}

public class Socke implements Sortierbar {
	private int groesse;
	private String farbe;

	public Socke(int groesse, String farbe) {
		this.groesse = groesse;
		this.farbe = farbe;
	}

	@Override
	public int istGroesser(Sortierbar element) {
		return this.groesse - element.liefereGroesse();
	}

	@Override
	public int liefereGroesse() {
		return groesse;
	}

	@Override
	public String toString() {
		return "Socke in " + farbe + " - Größe " + groesse;
	}
}

public class Schuh implements Sortierbar {
	private int groesse;
	private String art;

	public Schuh(int groesse, String art) {
		this.groesse = groesse;
		this.art = art;
	}

	@Override
	public int istGroesser(Sortierbar element) {
		return this.groesse - element.liefereGroesse();
	}

	@Override
	public int liefereGroesse() {
		return groesse;
	}

	@Override
	public String toString() {
		return art + " in Größe " + groesse;
	}
}


__________________
Syntax Highlighting fürs Board (Link)
24.01.2015 09:58 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Erstsemester
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Sei bitte so nett und schreibe noch ein paar Zeilen dazu, ich blicke momentan überhaupt nichts.
24.01.2015 10:05
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

In der main wird eine Array erstellt, das sortiert werden soll:
Sortierbar[] objekte = { new Socke(42, "rot"), ...};
Wie du siehst, ist der Typ nicht Socke, sondern Sortierbar. Hier können nämlich auch andere Dinge stehen, die man sortieren kann: Socken und Schuhe haben beide eine Größe, deshalb können sie nach dem selben Kriterium sortiert werden.

Das Interface bietet eine Vergleichsfunktion und eine Möglichkeit, den Vergleichswert abzufragen (Sonst ist nicht gewährleistet, dass du Socken nur mit Socken vergleichst - und die Größe des Schuhs ist private, da kommt die Socke sonst nicht ran.

Die Socke implementiert die Vergleichsfunktion und sowie die Größenabfrage. Zwecks schönerer Ausgabe habe ich toString auch gleich noch überschrieben.

__________________
Syntax Highlighting fürs Board (Link)
24.01.2015 10:11 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Erstsemester
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank auch für diese Antworten.
24.01.2015 10:26
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Sonstige Fragen » Unterschied Interfaces und abstrakte Klassen?