Interface NodeList wird als Klasse verwendet?

byron1778

Aktives Mitglied
Hallo Forum!

Entschuldigt bitte die etwas seltsame Frage, aber ich komme nicht hinter dieses Konstrukt!
Beim Auslesen eines XML - Dokuments wird u. a. folgendes verwendet:

Java:
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
System.out.println("Root element " + doc.getDocumentElement().getNodeName());
NodeList nodeLst = doc.getElementsByTagName("employee");

Und genau bei diesen paar Zeilen ist mein Verständnisproblem.
Document und NodeList sind lt. der Java - API ein Interface, aber seit wann kann man sie auf der linken Seite des Statements ( Document doc u. NodeList nodeLst ) wie eine Klasse verwenden?

Ich habe zwar gelesen, dass es etwas mit Vererbung auf sich hat, aber ich frage mich hier was genau?

Wenn mir jemand bitte das relativ verständlich erklären kann!

Ich danke Euch vielmals!

lG
 

CortPoker

Aktives Mitglied
Das geht schon immer. Das ist dann auch richtig angewendete Vererbung bzw. Schnittstellenvererbung.
Du kannst die Interfaces zwar selbst nicht instanziieren (also
Code:
Document d = new Document()
würde nur klappen, wenn du eine anonyme Klasse anlegst), allerdings kannst du ja durchaus Objekte des Types Document haben.
Das können dann zum Beispiel solche Klassen sein, die das Interface implementieren.

Genau das zeichnet Interfaces und abstrakte Klassen aus, dass man davon eben keine Instanz haben möchte, sondern nur Schnittstellen weitergibt
 

byron1778

Aktives Mitglied
Hallo!

Danke Dir vielmals!

Das heisst also, dass Interfaces in etwa abstrakten Klassen entsprechen, aber nicht instanziert werden können, jedoch können davon Objekte angelegt werden?!

lG
 
T

Tomate_Salat

Gast
Das heisst also, dass Interfaces in etwa abstrakten Klassen entsprechen, aber nicht instanziert werden können, jedoch können davon Objekte angelegt werden?!

Jein.

Galileo Computing :: Java ist auch eine Insel - 5 Eigene Klassen schreiben
Galileo Computing :: Java ist auch eine Insel - 5 Eigene Klassen schreiben

Abstrakte klassen können z.T implementiert sein. Interfaces sind eine reine deklaration. D.h. bei Interfaces interessiert dich nur, dass eine Methode existiert und nicht wie diese implementiert wurde. Eine Klasse kann zudem von mehreren Interfaces erben aber nur von einer (abstrakten) Klasse.

Weder von Interfaces noch von abstrakten Klassen kannst du direkt Objekte erstellen.
 

byron1778

Aktives Mitglied
Ok, danke Dir vielmals!

Nach dem durchsehen der Galileo Seite ist es klarer geworden!
Es war anfangs äußerst seltsam, dass ein Interface plötzlich ein Objekt zurückgegeben bekommt und auf den ersten Blick aussieht als wäre es eine "Klasse".

Ich habe bis jetzt Interfaces immer nur implementiert, aber noch nie habe ich es gesehen, als würden sie in etwa wie eine Klasse aufgerufen werden!
 

CortPoker

Aktives Mitglied
Stell dir vor, du hast das Interface Säugetier.
Macht wenig Sinn, davon ein Objekt zu erzeugen, weil was genau ist denn ein Säugetier? Man muss es also noch weiter spezialisieren (über implements)
Dann kommt die Klasse Tiger ins Spiel. Tiger zu erzeugen würde natürlich schon viel eher Sinn machen, da es die auch als konkrete Lebewesen gibt (im Gegensatz zu Säugetier, die einfach eine Familie darstellen).
Dann sähe dein Konstruktoraufruf so aus:
Code:
Saeugetier tiger = new Tiger();
 

byron1778

Aktives Mitglied
Danke Dir vielmals!

Jetzt habe ich es auch verstanden!

Es war mir einfach nicht bewusst, dass man Instanzen ebenso ähnlich aufrufen kann wie normale Klassen, auch wenn es jetzt keine Klassen im richtigen Sinne sind!

Danke Euch vielmals!

lG
 

Fant

Bekanntes Mitglied
Dann kommt die Klasse Tiger ins Spiel. Tiger zu erzeugen würde natürlich schon viel eher Sinn machen, da es die auch als konkrete Lebewesen gibt (im Gegensatz zu Säugetier, die einfach eine Familie darstellen).
Dann sähe dein Konstruktoraufruf so aus:
Code:
Saeugetier tiger = new Tiger();

Aber es gibt doch Papiertiger, Stubentiger, Fruchtiger....


Aber zurück zum Thema. Was in deinem Programm in der Variablen doc steckt ist natürlich ein richtiges Objekt, also die Instanz irgendeiner richtigen Klasse. Wichtig ist für die weitere Verwendung aber nur, dass ein Objekt dieser Klasse die Methoden zur Verfügung stellt, die das Interface Document liefert. Da einen der Rest nicht interessiert ist es sinnvoll sich hier auch darauf zu beschränken, dass das Objekt, welches du von der Methode db.parse(..) erhälst eben tatsächlich diese Methoden bereitstellt. Ein Vorteil ist z.B. nun, dass du die Implementierung von db.parse() so abändern kannst, das meinetwegen nicht mehr ein Objekt vom Typ MeinDokument zurückgegeben wird, sondern ein Objekt vom Typ AnderesDokument. Am Code der Klasse, die db.parse() aufrufst musst du aber nichts ändern..

Gruß Fant
 

byron1778

Aktives Mitglied
Danke Dir!

Ich bin gerade eben die einzelnen Stellen des Codes nach oben hin auch noch durchgegangen und konnte ebenso feststellen, dass hier mehrere Interfaces verwendet werden und es gibt 2 richtige Klassen, nämlich die Klasse DocumentBuilderFactory und DocumentBuilder.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
H abstract und interface Java Basics - Anfänger-Themen 4
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
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
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 OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
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
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
T Vererbung Interface Java Basics - Anfänger-Themen 5
F Interface aus anderem Package nutzen Java Basics - Anfänger-Themen 10
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
B Erste Schritte Wie definiere ich in Java ein Interface? Java Basics - Anfänger-Themen 6
L OOP Interface Prinzip? Java Basics - Anfänger-Themen 6
K Nutzung einer Klasse die das Iterator-Interface implementiert Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
J Innerhalb Interfacemethode: Interface als Attribut Java Basics - Anfänger-Themen 2
A Frage zu Interface Java Basics - Anfänger-Themen 16
J Interface Java Basics - Anfänger-Themen 3
W Interface Java Basics - Anfänger-Themen 1
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
Shams Kann man von einem Interface aus auf die dieses implementierende Klasse zugreifen? Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
J Frage zu dem Thema interface Java Basics - Anfänger-Themen 5
S Generics und Comparable Interface Java Basics - Anfänger-Themen 5
A Klasse,Vererbung,Interface,Singleton,Thread Java Basics - Anfänger-Themen 5
S Interface-Methode abrufen? Java Basics - Anfänger-Themen 2
P Vererbung Klasse erbt von abstrakter Klasse implementiert Interface Java Basics - Anfänger-Themen 2
M Konstanten in einem Interface definieren Java Basics - Anfänger-Themen 1
P interface Java Basics - Anfänger-Themen 1
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
M Interface als Datentyp Java Basics - Anfänger-Themen 12
K Interface Methoden überschreiben Java Basics - Anfänger-Themen 1
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2
G Interface klasse Java Basics - Anfänger-Themen 4
N Interface Interface (sinnvoll) erzeugen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben