Unterschied zwischen Adapterklassen und abstracten Klassen?

Status
Nicht offen für weitere Antworten.
E

EinGast

Gast
wo liegt eigentlich der unterschied zwischen Adapterklassen und abstracten Klassen.

so wie ich das jetzt mitgekriegt habe sind adapterklassen eigentlich auch abstracte klassen.

wenn ich eine abstrakte klasse einbaue muss ich doch aber alle unimplementierten Methoden schreiben. Bei ner Adapterklasse scheinbar nicht.
Oder stelle ich mir das jetzt falsch von und es gibt beispielsweise einen MouseAdapter, mit dem ich nur klicken kann und die methoden für pressed, released usw. sind leer im adapter implementiert?
Bisher dacht ich nämlich es gibt einen MouseAdapter und ich kann dann beliebig die Methoden implementieren, die ich ich brauche und um den rest brauch ich mir keine Sorgen zu machen. Wenn das so ist, wie funktioniert das dann?
ich kann ja im Adapter nicht zweimal die gleihe Methode implementieren, also einmal abstrakt und einmal normal?

Code:
public void meineMethode(int i)
{
//tu was
}

abstract void meineMethode(int i);

wäre nett, wenn mir das mal jemand erklären könnte...
 
B

Beni

Gast
Wieviele nicht implementierte Methoden haben denn diese Adapter?

Keine. Alle sind "leer implementiert". Eine Klasse kann auch einfach so abstrakt sein, damit niemand eine Instanz von ihr anlegen kann.
Und ein Adapter einfach so mal initialisieren macht ja keinen Sinn, da er gar nichts machen würde (ausser Speicher fressen).
 
E

EinGast

Gast
wenn in einem adapter diese methode drin ist:

Code:
public void meineMethode(int i) 
{ 
//tu was 
}


wieso kann ich die dann überschreiben? also so:

Code:
public void meineMethode(int i) 
{ 
int a = i*i;
System.out.println(a);
}

das wäre ja so, wie wenn ich 2 Methoden in einer Klasse habe, die den gleichen Namen und die gleichen Übergabeparameter haben. Das geht ja nicht (oder etwa doch?!)...

woher weiss dann java, welche von den beiden methoden es nehmen soll?
oder ist das in jeder abstrakten oder gar in jeder normalen klasse so, dass, wenn ich von einer anderen Klasse erbe, die Methode der Super-Klasse einfach überschrieben wird und dann automatisch die Methode der Subklasse verwendet wird?!
 
B

Beni

Gast
Immer die Methoden der Subklassen. Erst wenn dort die Methode nicht gefunden wird, wird mal in der Superklasse nachgeschaut, ob vielleicht dort so eine Methode herumlungert.

Die einzigen Unterschiede zwischen einer abstrakten und einer normalen Klasse sind:
- abstrakte Klassen kann man nicht initialisieren
- abstrakte Klassen haben vielleicht unimplementierte Methoden

Der Ganze Rest funktioniert gleich.
 
E

EinGast

Gast
danke

also sind adapterklassen stinknormale klassen. ihnen wird halt nur auf grund ihres einsatzes ein extra kapitel geopfert aber sich dann drüber ausgeschwiegen...
 

Illuvatar

Top Contributor
Nehmen wir als Beispiel mal die Klasse KeyAdapter.

Die Klasse implementiert KeyListener, welches folgende Methoden hat:

Code:
public void keyPressed(KeyEvent e) 
public void keyReleased(KeyEvent e) 
public void keyTyped(KeyEvent e)

Wenn du jetzt einem Fenster einen KeyListener hinzufügen willst, machst du das vielleicht so:

Code:
frame.addKeyListener (new KeyListener(){
  public void keyTyped (KeyEvent e)
  {
    //tut nichts
  }
  public void keyReleased (KeyEvent e)
  {
    //tut nichts
  }
  public void keyPressed (KeyEvent e)
  {
    //reagiere auf KeyEvent...
  }
});

Das ist allerdings sehr ungeschickt, da du zwei Methoden leer implementieren musst.
Dafür gibt es die
Code:
public class KeyAdapter implements KeyListener{
public void keyTyped (KeyEvent e)
  {
    //tut nichts
  }
  public void keyReleased (KeyEvent e)
  {
    //tut nichts
  }
  public void keyPressed (KeyEvent e)
  {
    //tut nichts
  }
}
, die ungefähr so aussieht wie gezeigt.

Um deinem Fenster einen KeyListener hinzuzufügen, kannst du jetzt auch eine aus KeyAdapter abgeleitete Klasse verwenden, da KeyAdapter KeyListener implementiert, was einfacher ist, da nur die benötigten Methoden überschrieben werden müssen:

Code:
frame.addKeyListener (new KeyAdapter(){
  public void keyPressed (KeyEvent e)
  {
    //reagiere auf KeyEvent...
  }
});

Ist es jetzt etwas klarer geworden? :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Unterschied zwischen List und LinkedList implementierung? Allgemeine Java-Themen 15
F Unterschied zwischen NormalizedValue und Value Allgemeine Java-Themen 5
A Best Practice Unterschied zwischen einer sauberen Dependency Injection und einer statischen Klasse Allgemeine Java-Themen 5
M Unterschied zwischen Win 7/2008R2 und Win8.1/2012R2? Allgemeine Java-Themen 8
H Gibt es einen großen Unterschied zwischen Java 6 und Java 7? Allgemeine Java-Themen 3
D Exakte Unterschied zwischen diesen Elementen? Allgemeine Java-Themen 5
N Unterschied zwischen "Java" und "Java mit Eclipse" Allgemeine Java-Themen 17
G Hauptthread anhalten / Unterschied zwischen Main-Thread und dialogelement-Thread Allgemeine Java-Themen 2
Lufti Unterschied zwischen Djava.library.path und Class-Path im Manifest? Allgemeine Java-Themen 2
B Unterschied zwischen Klasse und Objekt? Allgemeine Java-Themen 8
B Gibt es einen Unterschied zwischen Java 1.2 und Java 2? Allgemeine Java-Themen 7
J Unterschied zwischen "Debug" und "Run" Allgemeine Java-Themen 16
P Unterschied zwischen Funktion und Methoden Allgemeine Java-Themen 3
O Unterschied zwischen ThreadPoolExecutor und Executor Service Allgemeine Java-Themen 7
O Unterschied zwischen Semaphoren/Lock und ExecutorService Allgemeine Java-Themen 3
I Unterschied zwischen Applet und JApplet Allgemeine Java-Themen 2
R Der Unterschied zwischen 2.1 und 2.10 Allgemeine Java-Themen 2
P Was ist der Unterschied zwischen JSP und Servlet ? Allgemeine Java-Themen 4
S Unterschied zwischen notify() und notifyAll() Allgemeine Java-Themen 2
M Unterschied zwischen // und \\ Allgemeine Java-Themen 6
Encera Unterschied zweier "toString"-Methoden Allgemeine Java-Themen 1
P Unterschied Java SE und Java EE Allgemeine Java-Themen 2
J Unterschied: Polymorphie und Dynamisches Binden Allgemeine Java-Themen 8
VfL_Freak JDK installieren Unterschied zw. JDK 8_151 und 8_152 Allgemeine Java-Themen 3
T Unterschied Oracle JDK 8u111 8u112 Allgemeine Java-Themen 3
W Unterschied Standalone und Applet Allgemeine Java-Themen 1
O [log4J] Unterschied SocketServer <-> SimpleSocketServer Allgemeine Java-Themen 0
M Unterschied CPU Auslastung Allgemeine Java-Themen 0
N Unterschied Hobby-Codung und Professionelle Softwareentwicklung Allgemeine Java-Themen 5
D Unterschied Vererbung und Polymorphie? Allgemeine Java-Themen 4
G UnterSchied OpenJDK vs JDK Allgemeine Java-Themen 11
G Unterschied MyClass.class vs this Allgemeine Java-Themen 2
H Unterschied EventQueue.invoke... und thread.start() Allgemeine Java-Themen 4
Semox Unterschied bei Thread Erstellung Allgemeine Java-Themen 11
N Unterschied abstract interface und interface Allgemeine Java-Themen 4
G Unterschied Enterprise Anwendung und Web Anwendung Allgemeine Java-Themen 30
Q Unterschied der Logger Allgemeine Java-Themen 9
G Unterschied Long - Int Allgemeine Java-Themen 9
A Unterschied Scanner und Matcher Allgemeine Java-Themen 5
M Unterschied der java.exe des JDK und der JRE Allgemeine Java-Themen 15
K Unterschied Compilierung Eclipse 3.2 und Ant Allgemeine Java-Themen 3
V Unterschied FileOutputStream und FileWriter? Allgemeine Java-Themen 8
B Unterschied: jar <-> konsole Allgemeine Java-Themen 9
G Unterschied abstrakte Klasse und Interface? Allgemeine Java-Themen 3
T abstract - interface Unterschied Allgemeine Java-Themen 22
K Unterschied Core Java / Desktop Allgemeine Java-Themen 12
J Unterschied PrintJob & PrinterJob Allgemeine Java-Themen 11
M Unterschied notify() und notifyAll() Allgemeine Java-Themen 1
N Unterschied Calendar und GregorianCalendar Allgemeine Java-Themen 9
T Unterschied Dämon - Thread (läuft später auf RMI hinaus...) Allgemeine Java-Themen 6
B Unterschied: Java - Java 2 Allgemeine Java-Themen 5
B (String) und toString(), woliegt der Unterschied? Allgemeine Java-Themen 4
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
B Sent and Receive Funktionen zwischen Objekten ermöglichen? Allgemeine Java-Themen 8
Master3000 Dateien zwischen verschiedenen Netzwerken senden Allgemeine Java-Themen 17
CptK Backpropagation parallelisieren: Kommunikation zwischen den Threads Allgemeine Java-Themen 7
B Schnittstelle zwischen MySQL und Apache Allgemeine Java-Themen 8
TonioTec Api für Datenaustausch zwischen Client und Server Allgemeine Java-Themen 0
Kirby.exe Schauen ob ein Kante zwischen Knoten existiert Allgemeine Java-Themen 4
L Schlüsselworte Wie kann ich am Besten ein LocalDate zwischen Anfangs und EndDate checken Allgemeine Java-Themen 10
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
N Kollision zwischen ImageIcon und Rechteck Allgemeine Java-Themen 1
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
B Zufällig zwischen vorgegebenen Zahlen auswählen Allgemeine Java-Themen 6
J Millisekunde zwischen 2 Daten Allgemeine Java-Themen 6
D Best Practice Die niedrigste Differenz zwischen zwei Listen ermitteln. Allgemeine Java-Themen 10
J Fahrroute zwischen zwei Punkten finden Allgemeine Java-Themen 1
J Transfer von Integer zwischen zwei Clients - RMI Allgemeine Java-Themen 4
G Liste zwischen zwei Kalenderdaten erstellen Allgemeine Java-Themen 3
J Abhängigkeit zwischen Rechenzeit und Speicherbedarf in einen Algorithmus Allgemeine Java-Themen 7
T Strings über Bluetooth zwischen PC,µc oder Samrtphone senden und empfangen Allgemeine Java-Themen 0
H RegularExpression zwischen zwei Strings Allgemeine Java-Themen 2
V Input/Output Austausch von Bytes zwischen C# und Java Allgemeine Java-Themen 3
L Kommunikation zwischen C# und Java? Allgemeine Java-Themen 5
R jTable, nur Werte zwischen 2 Double values ausgeben Allgemeine Java-Themen 3
J Wie erschaffe ich einen sicheren Datenaustausch zwischen Thread und Nicht-Threads Allgemeine Java-Themen 8
N Zeitabstand zwischen 2 Daten(Mehrzahl von Datum) Allgemeine Java-Themen 3
O Socket-Unterschiede zwischen Windows und Ubuntu Allgemeine Java-Themen 2
Z Vergleich zwischen int und Object Allgemeine Java-Themen 1
S Eclipse Abhängigkeiten zwischen den Projekten in Eclipse Allgemeine Java-Themen 2
G nervendes Problem mit unterschieden zwischen Javax64 und x86 | je nach Programmbedarf beides nötig Allgemeine Java-Themen 2
S Threads Kommunikation zwischen SocketThread und WorkerThread Allgemeine Java-Themen 11
J Java-Implementierung diverser Beziehungen zwischen Klassen bzw. Objekten Allgemeine Java-Themen 2
B Unteschiede zwischen Kantenoperatoren Allgemeine Java-Themen 3
A Kommunikation zwischen 2 Jar-dateien Allgemeine Java-Themen 16
X Datentypen Prozentualer Abgleich zwischen 2 Strings (Pattern?) Allgemeine Java-Themen 3
Z zeit zwischen maus drücken und loslassen Allgemeine Java-Themen 7
C Komisches Verhalten zwischen Set und List bei contains Allgemeine Java-Themen 6
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
N Gridbaglayout - Abstände zwischen Komponenten einstellen Allgemeine Java-Themen 2
H Datenaustausch zwischen zwei Java-Programmen Allgemeine Java-Themen 5
C Swing Daten zwischen JTable teilen Allgemeine Java-Themen 6
X Bild im Memory zwischen speichern Allgemeine Java-Themen 11
T Zugriff zwischen Klassen für repaint Allgemeine Java-Themen 7
S Assoziation zwischen 2 klassen Allgemeine Java-Themen 14
V Threads & Pipes Datenaustausch zwischen Threads Allgemeine Java-Themen 2
C Strings zwischen 2 Zeichen auslesen Allgemeine Java-Themen 7
E kommunikation zwischen Fenstern Allgemeine Java-Themen 3
A Differenz zwischen zwei Uhrzeiten Allgemeine Java-Themen 7
S Datenformat zum Austausch zwischen Java und Python? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben