abstract und interface

Hbx8x

Aktives Mitglied
Ich habe Probleme diese zwei Begriffe richtig anwenden zu können. Ich sehe noch nicht einmal den Unterschied darin. Was ich sehe ist das abstract mit extends im Zusammenhang liegt und analog interface mit implements.

Geht es bei beiden nicht lediglich einfach nur um Vererbung? d.h. das Attribute (Eigenschaften) und Methoden der Vaterklasse für ,,Subklassen" übernommen werden. Außerdem dienen beide Anweisungen um ,,Allgemeine" Attribute/Methoden in ihrem jeweiligen Code aufzustellen. Diese Attribute/methoden kann ich dann in ihren Subklassen aufrufen, so als ob sie in deren Klassen definiert wurden sind. Weiterhin kann man bei abstrakten Klassen und interfaces keine Objekte (Instanzen) erstellen. d.h. das einbinden in andere Subklassen funktioniert etwas anders als bei z.b.

class Beispielklasse {

void beispielmethode(int x){

// Anweisung }

}

class AndereKlasse {

Beispielklasse objektvonbeispielKlasse = new Beispielklasse; //Objekterzeugung (Instanzerzeugung)

objektvonbeispielKlasse.beispielmethode(233); // Dient dies nicht ebenfalls als ,,Schnittstelle" wie bei einem Interface?

Jetzt kann man das ganze ja nocheinmal über Schnittstellen (interface ->implements) bzw abstrakten Klassen (abstract -> extends) realisieren. Unterschied zu oben genannten Beispiel ist jedoch das oben keine Hierarchie vorhanden ist und bei Schnittstellen und abstrakten Klassen sind Hierarchien vorhanden (Vaterklasse - > Subklasse ->SubSubklasse -> usw).

Außerdem braucht man bei abstrakten Klassen und Schnittstellen keine Objekte zu erzeugen, bevor man auf die Attribute/Methoden ,,der anderen Seite" zugreifen kann. Das einbinden funktioniert einfach über extends bzw analog mit implements.

Kurz kann man sagen: Schnittstellen (Interface) und abstrakte Klassen(abstract) nutzen um allgemeine Attribute/Methoden aufzustellen die allgemein etwas beschreibt und dann später spezielle subklassen via implements und extends erstellen.

Kann mir bitte jemand sagen ob man das so sagen kann oder was ich mir noch merken muss ?

Lg
 

temi

Top Contributor
Ein Interface ist, wie der Name schon sagt, eine Schnittstelle. Es ist damit eine Art Vertrag. Eine Klasse, die ein Interface implementiert, garantiert, die von der Schnittstelle geforderten Methoden zur Verfügung zu stellen.

Beispiel:

Das Interface "List<>" legt fest, welche Methoden eine Liste erfüllen muss. Konkrete Implementationen, die intern auch völlig unterschiedlich arbeiten können, sind:

ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector

Der Vorteil des Interface ist dabei, dass du die konkrete Implementation in deinem Programm, je nach Bedarf, wählen und auch ändern kannst:

Java:
List<String> liste = new ArrayList<>();

// "liste" ist vom Typ des Interfaces, wenn dir ArrayList später nicht mehr passt,
// kannst du einfach eine andere Klasse instantiieren, die List<> implementiert.
// Das Programm arbeitet nur mit den von List<> garantierten Methoden und funktioniert.

Außerdem kann eine Klasse mehrere Interfaces implementieren.

Java:
class Foo implements InterfaceA, InterfaceB {
    // code...
}

Foo foo = new Foo(); // geht
InterfaceA a = new Foo(); // geht auch
InterfaceB b = new Foo(); // geht auch

// nehmen wir eine Methode an, die als Parameter InterfaceA verlangt

void doSomethingWithA(InterfaceA a) {
    // code..
}

doSomethingWithA(foo); // geht

// oder eine, die InterfaceB als Parameter verlangt

void doSomethingWithB(InterfaceB b) {
    // code..
}

doSomethingWithB(foo); // geht auch
 
Zuletzt bearbeitet:

temi

Top Contributor
Noch ein paar Worte zu abstract und interface:

Schau dir beispielsweise mal ArrayList an.

Die Vererbungshierarchie ist:

Die implementierten Interfaces sind:

Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess

Dabei geht es z.B. darum doppelten Code zu vermeiden (DRY = don't repeat yourself, ist ein wichtiges Prinzip bei der Programmierung). Deshalb werden Interfaces häufig zuerst von abstrakten Klassen implementiert, die grundlegende Funktionen und Strukturen bereitstellen. Die eigentlich genutzten Listenklassen erben wiederum von diesen abstrakten Klassen und ergänzen dort spezialisierte Methoden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Interface vs Abstract Java Basics - Anfänger-Themen 2
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
G Verständnisfrage zum Interface und Abstract Java Basics - Anfänger-Themen 3
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
S Wann Methode abstract? Java Basics - Anfänger-Themen 10
O Verständniss Problem bei abstract class Java Basics - Anfänger-Themen 7
H abstract - Wozu? Java Basics - Anfänger-Themen 6
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
S Compiler-Fehler not abstract and does not override Java Basics - Anfänger-Themen 9
M abstract method does not override or implement.... Java Basics - Anfänger-Themen 7
B Fehler : class is abstract and does not overwrite Java Basics - Anfänger-Themen 2
B klasse abstract Java Basics - Anfänger-Themen 9
R Wofür abstract? Java Basics - Anfänger-Themen 29
E Klasse abstract machen Java Basics - Anfänger-Themen 3
G Schlüsselworte Bedeutung von abstract Java Basics - Anfänger-Themen 2
C Liste mit Attribut Abstract vererben Java Basics - Anfänger-Themen 11
Y Theorie: Abstract Method Java Basics - Anfänger-Themen 6
P Problem mit Eclipse "must be declared as abstract" Java Basics - Anfänger-Themen 3
O Abstract Method & Generics Java Basics - Anfänger-Themen 10
B abstract static Java Basics - Anfänger-Themen 16
T abstract class Java Basics - Anfänger-Themen 8
K abstract Java Basics - Anfänger-Themen 8
W abstract static Java Basics - Anfänger-Themen 3
F does not overwride abstract method Java Basics - Anfänger-Themen 2
A in abstract Klasse private Variablen Java Basics - Anfänger-Themen 3
J abstract & Polymorphismus Java Basics - Anfänger-Themen 11
K Problem mit Abstract Table Model Java Basics - Anfänger-Themen 5
D Fehlermeldung "Time is not abstract" Java Basics - Anfänger-Themen 6
T Problem mit Abstract Windowing Toolkit(simples Problem) Java Basics - Anfänger-Themen 8
P Adaptor, Abstract Factory Java Basics - Anfänger-Themen 12
K <class> is not abstract and does not override abstract Java Basics - Anfänger-Themen 5
S Brauche Hilfe bei "abstract" Java Basics - Anfänger-Themen 12
G fenster abstract Java Basics - Anfänger-Themen 18
R abstract class <-> instance Java Basics - Anfänger-Themen 6
G Abstract Class - Abstract Method Java Basics - Anfänger-Themen 4
I No Jakarta Enterprise Beans found with interface ignorieren? Java Basics - Anfänger-Themen 2
I No EJB found with interface of type Java Basics - Anfänger-Themen 12
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Abstrakt oder Interface Java Basics - Anfänger-Themen 3
Say public/default Interface Java Basics - Anfänger-Themen 9
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
I Browser integriert in Desktop Applikation - Webcam interface not found Java Basics - Anfänger-Themen 26
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
J Interface Comparable<T> Java Basics - Anfänger-Themen 10
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
D Interface Verständisfrage Java Basics - Anfänger-Themen 8
U Interface | constructor injection Java Basics - Anfänger-Themen 5
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
T Interface Map und Map.Entry Java Basics - Anfänger-Themen 4
U Interface als PAramter (Vergleich) und ein Error Java Basics - Anfänger-Themen 9
I Interface von einer EJB Klasse, um Code zu reduzieren Java Basics - Anfänger-Themen 1
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
I JSON und Interface Java Basics - Anfänger-Themen 3
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
CptK Interface Functional interface mit mehreren Methoden Java Basics - Anfänger-Themen 6
L Interface & Comparable Java Basics - Anfänger-Themen 15
T Interface Java Basics - Anfänger-Themen 0
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
C Methoden-Parameter ist Interface Java Basics - Anfänger-Themen 5
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
A Interface Kuddelmuddel Java Basics - Anfänger-Themen 4
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
S Interface Interface und seine Implementierung Java Basics - Anfänger-Themen 5
F Interface Casting Java Basics - Anfänger-Themen 13
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
H Interface Java Basics - Anfänger-Themen 2
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
T Interface Methode im Interface mit mehreren Parametern Java Basics - Anfänger-Themen 10
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
Kornblume Comparable Interface für Objektvergleiche nutzen Java Basics - Anfänger-Themen 15
I Comparator<T> Interface als Methodenparamter Java Basics - Anfänger-Themen 4
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
E Interface nur von abstrakter Klasse implementierbar?! Java Basics - Anfänger-Themen 1
J Vererbung Abstrake Klasse <-> Interface Java Basics - Anfänger-Themen 5
C Interface als Datentyp eines Attributes? Java Basics - Anfänger-Themen 6
U Interface Bedeutung "Code to an interface rather than to an implementation." Java Basics - Anfänger-Themen 4
M Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
M Maven Main-Methode Interface und Klasse Java Basics - Anfänger-Themen 2
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
N Interface Interface Erstellung Java Basics - Anfänger-Themen 3
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse Java Basics - Anfänger-Themen 3
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben