Abstrakte Klassen und Interfaces

Status
Nicht offen für weitere Antworten.

A3XX

Bekanntes Mitglied
HI

Bin mich gerade wieder bisschen tiefer am in Java reinlesen, aber ich kapiere nicht für was abstrakte Klassen und Interfaces genau gebraucht werden können? So wie das in meinem Buch beschrieben ist kriegt man den Eindruck, dass es schlauer wäre die jeweiligen Methoden nicht zu implementieren (beim Inteface) sondern direkt reinzuschreiben. Denn was der Autor in das Intefarce geschrieben hat sind nur die Namen der Methoden...
 

Illuvatar

Top Contributor
A3XX hat gesagt.:
HI
Bin mich gerade wieder bisschen tiefer am in Java reinlesen, aber ich kapiere nicht für was abstrakte Klassen und Interfaces genau gebraucht werden können?
Hä? Was meinst du mit dem Satz? Alle abstrakte Klassen/Interfaces können gebraucht werden bzw. haben einen Nuzten, sonst häte sie ja niemand geschrieben, oder?
Edit: Lesefehler, hab gelesen "was für" statt "für was" :wink: :oops:

A3XX hat gesagt.:
So wie das in meinem Buch beschrieben ist kriegt man den Eindruck, dass es schlauer wäre die jeweiligen Methoden nicht zu implementieren (beim Inteface) sondern direkt reinzuschreiben. Denn was der Autor in das Intefarce geschrieben hat sind nur die Namen der Methoden...
Du musst die Methoden implementieren und das bedeutet direkt reinschreiben, oder was meinste?
 

A3XX

Bekanntes Mitglied
Ne, in dem Buch, das ich lese steht immer:

public interface test {
methodea();
methodeb();
}

public class test2 implements test {
methodea() {
//eigentlicher Inhalt
}
}

Sorry, sehr spartanisch dargestellt, vorallem sicher vollkommen falsch geschrieben. Aber eben, in dem Interface hat der Autor eigentlich nur die Namen erwähnt und dort, wo sie dann implementiert werden, erst den Code hinzugefügt. Ich kapier nicht was das füre inen Nutzen haben soll?! Und abstrakte Klassen verstehe ich sowieso nicht. Gibt es irgendwo was gutes & verständliches zum Nachlesen über die beiden`? Nicht www.javabuch.de --- das ist genau das verwirrende Buch...
 

Isaac

Bekanntes Mitglied
Manchmal ist es schlauer gegen ein Interface zu programmieren.

Das hat den Vorteil das man bei der Instanziierung das Interface angeben kann.

Also z.b.

Code:
List myList = new Vector(); 
List myList2 = new ArrayList();

Das ist an sich ja noch nicht spannend. Wirklich fuchsig wird die Sache aber nun wenn ich eine Methode schreibe

Code:
public void(List list)
{
    //mach was tolles mit der Liste
}

Da ich nicht gegen Vecotr oder ArrayList, sondern gegen das List Interface programmiert habe ist es vollkommen egal was du für ein Objekt da rein steckst solange es das List Interface implementiert.


abstract Klassen haben den Vorteil das sie nicht instanziiert werden können sondern das man nur von ihnen ableiten kann. Methoden die keinen Body besitzen müssen vom Programmierer gefüllt werden. Wenn ich also nicht weiss wie die Implementierung sein soll zwinge ich den Benutzer der Klasse eine Methode zu implementieren.
 
R

Roar

Gast
jaja das böse alte javabuch...
interfaces sind zur typendeklaration da. Das heisst du schreibst ein interface und deklarierst bestimmte methoden. dann ist jede implementierende Klasse ein Typ vom interface. In einer anderen Klasse/Methode kannst du dann z.B. eine instanz einer klasse die ein bestimmtes interface imnplementiert erwarten, und dieses dann weiterverabreiten.

so z.B.

Code:
public interface Plugable {
public String getName();
}

class EinPlugin implements Plugable {

public String getName() { return "Ein Plugin"; }
}

class EinAnderesPlugin implements Plugable {

public String getName() { return "Ein anderes Plugin"; }
}

class BlahBlahBlah {
public static void main(String[] args) {
PluginVerarbeiter.liesName(new EinPlugin());
PluginVerarbeiter.liesName(new EinAnderesPlugin());
}
}

public class PluginVerarbeiter {

public static void liesName(Plugable p) {
System.out.println("Name: "+ p.getName());
}
}
 

Illuvatar

Top Contributor
In dem Buch sind garantiert nirgends Klassenname klein geschrieben.
Und dank dem Buch hab ichs verstanden. Da is doch z.B. ein sehr schönes Beispiel.

Ein interface Groesse:

Code:
/* Groesse.java */

public interface Groesse
{
  public int laenge();
  public int hoehe();
  public int breite();
}

Und eine Klasse, die Groeße implementiert, d.h., man kann von ihr die Groeße erfahren:

Code:
/* Auto2.java */

public class Auto2
implements Groesse
{
  public String name;
  public int    erstzulassung;
  public int    leistung;
  public int    laenge;
  public int    hoehe;
  public int    breite;

  public int laenge()
  {
    return this.laenge;
  }

  public int hoehe()
  {
    return this.hoehe;
  }

  public int breite()
  {
    return this.breite;
  }
}
(Da fehlen halt setter-Methoden)

Genauso diese Klasse:
Code:
public class FussballPlatz
implements Groesse
{
  public int laenge()
  {
    return 105000;
  }

  public int hoehe()
  {
    return 0;
  }

  public int breite()
  {
    return 70000;
  }
}

Auch hier kann man die Größe erfahren.

Beide Klassen beschreiben unterschiedliche Dinge, könnten aus unterschiedlichen Klassen abgeleitet sein.
Dennoch haben beide eine Groesse, das wird durch das Interface angezeigt.
Du könntest ein Groesse[] haben, du weißt nicht, was es für Klasen sind, kannst aber die Größe erfahren.

Edit: Zweiter :(
 

A3XX

Bekanntes Mitglied
Tönt beides extrem komplex. Verwendet ihr das viel? Und gibt es noch eine etwas längere Erklärung irgendwo zum Nachlesen?
 

Illuvatar

Top Contributor
Ich verwende es vor allem bei Listeners. Die kommen aber erst Kapitel 28 :) .

Code:
interface EventListener
{
    public void event(Event e);
}

Die können sich wo registrieren, werden da in einem Vector gespeichert und können ganz einfach aufgerufen werden.
 

Isaac

Bekanntes Mitglied
Das ist überhaubt nicht kompliziert. Immer wenn du eine gemeinsame Basis schaffen willst für verschiedenste Objekte nutzt du Interfaces. Wenn du dir mein Posting anschaust wird der Vorteil, hoffe ich, klar. ArrayList und Vector könne unterschiedlichste Vorfahren haben, sie müssen nicht mal ein gemeinsames Urobjekt habe und trotzdem kann man sie nun auf die gleiche Art und Weise behandeln. Statt 2 Methoden brauche ich nur noch eine, die sich auf dem Interface abstützt.



Ein Beispiel:

Es gibt Tools die für dich das Sortieren übernehmen. Wer will schon immer wieder ein Bubblesort neu implementieren?
Nun hast du also eine Sammlung von Objekten die in einem Vector oder was weiss ich wo drin sind. Aber woher weiss das Tool wie er deine ganz eigenen privaten Objekte sortieren soll?

Hier kommt das Interface "Comparable" ins Spiel. Du implementierst nun in deine Klasse von der die Objekte erzeugt worden sind das Interface "Comparable". Dieses Interface zwingt dich nun die Methode "compareTo" zu implementieren. Das must du natürlich selber machen da nur du selbst weisst wie welches deiner Objekte im vergleich zu einem anderen der selben Art "grösser" oder "kleiner" ist. Sei es nun Lexikalisch an einem String oder einer int member variable im Objekte, its up to you.

Aber, dank dem Interface kannst du nun alle Methoden nutzen die ein Objekt mit Compareable Interface erwarten. Denn diese Methoden stüzten sich intern ausschliesslich auf den Methoden ab die im Interface definiert sind.
 
B

bygones

Gast
ah menno Isaac - das ist mein lieblingsbeispiel für ein Interface.... das wollte ich sagen.... :? :(

naja - dann mein lieblingsbsp für eine absktrakte Klasse.

Wie bekannt ist gibt es zwei Arten von Menschen - Mann & Frau. Beide haben vieles gemeinsam aber auch vieles (vieles) unterschiedlich... Um das gemeinsame nicht mehrfach zu schreiben denkt man sich eine schöne Vererbungshierarchie aus mit der Klasse Mensch als Oberklasse und die beiden Klasse Mann und Frau erben von dieser Klasse.

Nun willst du aber zwingen, dass ein Mensch entweder eine Frau oder ein Mann ist, es darf kein geschlechtsneutrales Wesen geben. Also machst du die Klasse Mensch abstrakt - d.h. es kann keine Instanz der Klasse Mensch erstellt werden, aber dennoch genießen die beiden unterklassen die Vererbungsidee....

Das ist nur ein Bsp für eine abstrakte Klasse....
 

A3XX

Bekanntes Mitglied
Hi again

Danke wieder für eure Antworten. Also das abstrakte ist mir klar, die interfaces so halbwegs, weil ich eben z.B. Bubblesort überhaupt nicht kenne. Aber grob grob ist es klar. Wird mir hoffentlich in irgendnem Tutorial nochmal begegnen damit ich es live kapieren kann :)

EDIT:

Also nur zur Info, ich hab schone in ganzes Lehrbuch ("Java for Students") durch :) Ich repetiere jetzt nur nochmal alles mittles diesem anderen Online-Buch, dieses ist aber an gewissen Stellene infach ausführlicher. Sicher ein Grund weil es mehr Nachschlagewerk als Lehrbuch ist. Das andere war sicher das beste Lehrbuch, das ich je in den Händen hielt :)
 

Heiko

Bekanntes Mitglied
deathbyaclown hat gesagt.:
ah menno Isaac - das ist mein lieblingsbeispiel für ein Interface.... das wollte ich sagen.... :? :(

naja - dann mein lieblingsbsp für eine absktrakte Klasse.

Wie bekannt ist gibt es zwei Arten von Menschen - Mann & Frau. Beide haben vieles gemeinsam aber auch vieles (vieles) unterschiedlich... Um das gemeinsame nicht mehrfach zu schreiben denkt man sich eine schöne Vererbungshierarchie aus mit der Klasse Mensch als Oberklasse und die beiden Klasse Mann und Frau erben von dieser Klasse.

Nun willst du aber zwingen, dass ein Mensch entweder eine Frau oder ein Mann ist, es darf kein geschlechtsneutrales Wesen geben. Also machst du die Klasse Mensch abstrakt - d.h. es kann keine Instanz der Klasse Mensch erstellt werden, aber dennoch genießen die beiden unterklassen die Vererbungsidee....

Das ist nur ein Bsp für eine abstrakte Klasse....

Das Beispiel muss ich mir merken, finde ich gut so hat uns das damals keiner erklärt. Wir haben das an PKWs und dann die Automarken erklärt bekommen. ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
V Interface Interfaces und abstrakte Klassen Java Basics - Anfänger-Themen 3
J Interfaces Abstrakte Klassen Java Basics - Anfänger-Themen 15
D Abstrakte Klassen und Interfaces als Paramter in Funktionen Java Basics - Anfänger-Themen 3
T Interfaces: Braucht man abstrakte Klassen eigentlich noch? Java Basics - Anfänger-Themen 3
M abstrakte klassen und interfaces Java Basics - Anfänger-Themen 2
H abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 13
R Interfaces durch abstrakte Klassen ersetzbar? Java Basics - Anfänger-Themen 8
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
J Objekte und Abstrakte Klassen Java Basics - Anfänger-Themen 2
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
M Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
D Abstrakte Klassen Verständniss Frage Java Basics - Anfänger-Themen 4
B Abstrakte Klassen Java Basics - Anfänger-Themen 7
S Abstrakte Klassen Java Basics - Anfänger-Themen 2
C Dynamische Referenz & abstrakte Klassen Java Basics - Anfänger-Themen 3
G Abstrakte Klassen - theoretische Frage Java Basics - Anfänger-Themen 2
OnDemand Abstrakte Klassen Java Basics - Anfänger-Themen 4
T OOP Abstrakte Klassen und ihre Kinder: wie läuft das? Java Basics - Anfänger-Themen 3
M Abstrakte Klassen Java Basics - Anfänger-Themen 2
M Interface und Abstrakte Klassen Java Basics - Anfänger-Themen 12
R Namenskonvention abstrakte Klassen Java Basics - Anfänger-Themen 6
C OOP Objektstruktur: abstrakte Klassen Java Basics - Anfänger-Themen 3
T OOP abstrakte klassen - methoden Java Basics - Anfänger-Themen 8
M Abstrakte Klassen Java Basics - Anfänger-Themen 21
T Abstrakte Klassen Java Basics - Anfänger-Themen 6
C abstrakte Klassen mögen mich nicht... Java Basics - Anfänger-Themen 2
I Abstrakte Klassen Java Basics - Anfänger-Themen 8
D Zusammenfassung von Klassen (Vererbung? Abstrakte Klass? ...?) Java Basics - Anfänger-Themen 8
G Abstrakte Klassen und Methoden Java Basics - Anfänger-Themen 3
C Schnittstellen und Abstrakte Klassen Java Basics - Anfänger-Themen 3
I Abstrakte Klassen Java Basics - Anfänger-Themen 22
G Abstrakte Klassen ? Java Basics - Anfänger-Themen 9
nadoria abstrakte Klassen Java Basics - Anfänger-Themen 6
M Unterscheid Abstrakte Klassen/Interface Klassen? Java Basics - Anfänger-Themen 7
T abstrakte Klassen? Java Basics - Anfänger-Themen 2
M abstrakte klassen / Schnittstellen Java Basics - Anfänger-Themen 4
S Vererbung Abstrakte Methoden: Wozu das Ganze?! Java Basics - Anfänger-Themen 7
S abstrakte methoden in subclass? Java Basics - Anfänger-Themen 7
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
G Java Abstrakte Methoden Java Basics - Anfänger-Themen 2
T Abstrakte Klasse und Interfaces Java Basics - Anfänger-Themen 12
D Abstrakte Klasse, Konstruktorkette, Attribute setzen Java Basics - Anfänger-Themen 12
L Abstrakte Typen und Schnittstellen Java Basics - Anfänger-Themen 19
S Abstrakte Methode nutzen Java Basics - Anfänger-Themen 9
J abstrakte Methode in Klasse mit Rückgabetyp der abgeleiteten Klasse Java Basics - Anfänger-Themen 5
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
T Übungsaufgabe abstrakte Klasse Java Basics - Anfänger-Themen 21
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Datentypen Abstrakte Datentypen Java Basics - Anfänger-Themen 0
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse Java Basics - Anfänger-Themen 3
K Abstrakte Klasse: vererbte Klasse; instance of? Java Basics - Anfänger-Themen 26
A Abstrakte Datentypen - Methode delete Java Basics - Anfänger-Themen 6
N Vererbung Abstrakte Klasse stateful Java Basics - Anfänger-Themen 3
D Methoden Abstrakte Methoden Java Basics - Anfänger-Themen 3
W Abstrakte Klasse mit Variable? Java Basics - Anfänger-Themen 2
C Abstrakte und virtuelle Methoden in Java Java Basics - Anfänger-Themen 4
E verdeckte abstrakte Methode sinnvoll? Java Basics - Anfänger-Themen 7
A Vererbung Abstrakte Klasse mit Methode die Objekte der Subklassen benutzt? Java Basics - Anfänger-Themen 7
W Abstrakte und konkrete Klasse Java Basics - Anfänger-Themen 4
F Abstrakte Klasse doch zum "Teil" instanzieren? Java Basics - Anfänger-Themen 4
H Abstrakte Basisklasse Verständnisproblem! Java Basics - Anfänger-Themen 8
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
N Datentypen abstrakte Klasse wird instanziert Java Basics - Anfänger-Themen 3
D Methoden abstrakte Methoden und Rückgabewerte Java Basics - Anfänger-Themen 2
B Abstrakte Methode vs. Interface Java Basics - Anfänger-Themen 2
propra Interface - abstrakte Klasse Java Basics - Anfänger-Themen 18
N Abstrakte Klasse Java Basics - Anfänger-Themen 28
L Über abstrakte Klasse auf eine Klasse zugreifen? Java Basics - Anfänger-Themen 6
V Vererbung Abstrakte Methode Java Basics - Anfänger-Themen 3
J Welchen Sinn haben abstrakte Methoden? Java Basics - Anfänger-Themen 4
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
StupidAttack Abstrakte Methoden in nicht-abstrakter Methode in abstrakter Klasse Java Basics - Anfänger-Themen 6
T Abstrakte Klasse Java Basics - Anfänger-Themen 3
S Abstrakte Klasse Java Basics - Anfänger-Themen 5
T OO, Konstruktor, abstrakte Methoden Java Basics - Anfänger-Themen 13
K Abstrakte Klasse vs. Interface Java Basics - Anfänger-Themen 21
K Abstrakte Klasse bilden? Java Basics - Anfänger-Themen 11
S Abstrakte Klasse, festlegen, dass Methode verändert werden muss. Java Basics - Anfänger-Themen 4
H Warum Java? | Abstrakte Klasse = Modul? Java Basics - Anfänger-Themen 20
J abstrakte klasse und methode super Java Basics - Anfänger-Themen 2
H Eine Abstrakte Klasse muss. Java Basics - Anfänger-Themen 7
G Abstrakte Klasse "Point" Java Basics - Anfänger-Themen 2
G Abstrakte Methode in gleicher Klasse aufrufen Java Basics - Anfänger-Themen 5
M abstrakte Klasse Java Basics - Anfänger-Themen 3
F Abstrakte Klasse: Konstruktor vs init() Java Basics - Anfänger-Themen 13
G Abstrakte Klasse (was passiert hier) Java Basics - Anfänger-Themen 3
G Interface oder Abstrakte Klasse? Java Basics - Anfänger-Themen 3
G konkretes beispiel: interface hier besser als abstrakte kl. Java Basics - Anfänger-Themen 4
Acha Unterschied Interface - abstrakte Klasse Java Basics - Anfänger-Themen 4
B OOP: abstrakte klasse implementiert interface Java Basics - Anfänger-Themen 3
L abstrakte Methode nicht implementiert! Java Basics - Anfänger-Themen 5
D Abstrakte Klasse Graphics Java Basics - Anfänger-Themen 3
A Abstrakte Klasse Java Basics - Anfänger-Themen 3
G abstrakte klasse Java Basics - Anfänger-Themen 6
F Abstrakte Klasse Baum Java Basics - Anfänger-Themen 6
A Eine abstrakte Methode static machen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben