Interface Interface Objekte erzeugen

M

MisterX

Gast
Hi,

ich komme mit dem Thema Interface nicht ganz zurecht. Irgendwie fehlt mir hier das Verständnis. Es gibt viele Seite mit Beispielen, die aber irgendwie bei mir nicht die Lampe einschalten.

Kann ich in einem Interface z.B. ein Objekt der Klasse Datenbank erzeugen und hier die Methoden des Datenbankzugriffs anbieten?
Wäre das eine Praxisanwendung?
 

Andi_CH

Top Contributor
Schau mal da

Praxis?

einerseits eine Art "Mehrfachvererbung" wobei Interfaces immer abstrakt sind
andererseits ein angenehmes Mittel verschiedene Klassen dasselbe Interface aufzuzwingen (oder besser den Programmierern der Klassen)
 
G

Garlic

Gast
Vielleicht hast du schon von Vererbung gehört?

Java:
class baum extends pflanze {}
// Klasse Baum erweitert Pflanze, also Baum "ist eine" Pflanze

und bei Interfaces wird "Mehrfachvererbung" angewendet.
Java:
interface Hauspflanze {}
//anstatt "class" wird "interface" benutzt, und interface ist abstrakt also es wird nicht implementiert.
//wobei der implemetierungscode in die konkreten classe kommt.

class Bonsai extends Pflanze implements Hauspflanze {}
// implements ist das Schlüsselwort.
// ein Bonsai "ist eine" Pflanze, aber auch "ist eine" Hausplfanze.
 
B

bygones

Gast
ich weigere mich immer Interfaces als Mehrfachvererbung abzutun, aber die Diskussion hat wir schonmal.

Interfaces beschreiben, was eine Klasse kann, ohne das Verhalten spezifisch zu bestimmen.

An deinem Bsp mit der Datenbank. Es gibt ein Interfaces das die ueblichn CRUD Methoden anbietet. Nun kannst du Software schrieben die nur mit diesen Interface arbeitet und es kann versch. Implementierungen geben, die dann zb MySQL oder Oracle oder was auch immer benutzen.

Somit sind Interfaces eine Beschreibung von Funktionalitaet einer Klasse. Nach dem Prinzip "Ich kann folgendes machen, wie genau ich das mach, das weisst du nicht und brauchst du auch nicht wissen". Sozusagen ein bindender Vertrag den die Klasse erfuellt
 
M

MisterX

Gast
Danke für die Antworten.

Aber kann ich ein Objekt erzeugen und hier die Referenz quasi vererben?
Wenn ich das gelesen und verstanden habe enthalten Interfaces nur abstracte Methoden.
 
B

bygones

Gast
Aber kann ich ein Objekt erzeugen und hier die Referenz quasi vererben?
wie ?
Wenn ich das gelesen und verstanden habe enthalten Interfaces nur abstracte Methoden.
und konstanten.

schau dir mal [c]Comparable[/c], was ein gutes Bsp ist. Jede Klasse die Comparable implementiert kann sagen, wie sie sortiert werden soll.
Sortiertalgorithmen ist dann egal was fuer eine konkrete Klasse sortiert wird, es reicht, dass sie Comparable implementieren
 
M

MisterX

Gast
Ich hätte in der Theorie an so was in die Richtung gedacht:

Java:
interface sqlzugriff {

datenbank neu = new datenbank();
public abstract dbzugriff() {
  
}

}

class auto implement sqlzugriff {

    neu.dbzugriff

}
 

André Uhres

Top Contributor
Mit "interface" geht das nicht. Selbst wenn es gehen würde, wäre es nicht sinnvoll. Mit einer abstrakten Klasse würde es zwar gehen, ist aber gleichfalls nicht sinnvoll. Warum nicht? Weil ein Auto kein SQL- Zugriff ist! Ein solcher Entwurf widerspricht jeder Logik.

Gruß,
André
 

Andi_CH

Top Contributor
ich weigere mich immer Interfaces als Mehrfachvererbung abzutun, aber die Diskussion hat wir schonmal.

Interfaces beschreiben, was eine Klasse kann, ohne das Verhalten spezifisch zu bestimmen.

Das macht eine rein abstrakte Vaterklasse auch ...

Gerade für Leute die erst einmal eine Sprache gelernt haben die keine Interfaces kennt, ist es immer noch die beste Erklärung.

Teialehrbuch hat gesagt.:
In Java gibt es nur Einfachvererbung, d.h. man kann nach dem Schlüsselwort extends nicht eine Liste von Superklassen angeben, wie es in einigen anderen Programmiersprachen möglich ist. Die Arbeit mit Interfaces erlaubt jedoch eine Simulation der Mehrfachvererbung.

Das ist noch der direkte Link
 

DerFeivel

Bekanntes Mitglied
Ein Interface kann man (ganz abstrakt) als einen 'Vertrag über eine gemeinsame Schnittstelle' verstehen.

Wie in einem Vertrag legst du bei einem Interface immer nur fest, was ein Vertragspartner anbieten muss um den Vertrag zu erfüllen. Die Art und Weise er die Vertragsbedinungen erfüllt, ist dann ihm überlassen.

Deswegen deklarierst du in einem Interface ja auch nur die Methode, die eine Methode umsetzen muss, um diesem Interface (seinem Vertrag) gerecht zu werden.


Als Beispiel:
Java:
public Interface IPersonalDaten{

        public int getPersonalNummer(String Vorname,String Nachname);

        public int getGehalt(String Vorname,String Nachname);
  
}
Du sagst also:

Alle Klassen die mir den Zugriff auf Personaldaten erlauben sollen, müssen mindestens diese beiden Methoden anbieten. Wie Sie die Rückgabewerte ermitteln sind dann Umsetzungspezifika der Klassen.

Weiteres Beispiel:

Java:
/** Personaldatenermittlung über Datenbanzugriff
*/
public class PersonalDatenDatabase implements IPersonalDaten{

        private java.sql.Connection;
      
        public int getPersonalNummer(String Vorname,String Nachname){

               connection.....  //Herstellen der Datenbankverbindung und Abfrage
              ...
        }

        public int getGehalt(String Vorname,String Nachname){
          
         
               connection.....  //Herstellen der Datenbankverbindung und Abfrage
        }
 }


Java:
/** Personaldatenermittlung über Dateizugriff
*/
public class PersonalDatenFileBased implements IPersonalDaten{

        private java.io.File datei;
      
        public int getPersonalNummer(String Vorname,String Nachname){

               datei...  // Abfrage aus Datei
              ...
        }

        public int getGehalt(String Vorname,String Nachname){
          
         
               datei....  // Abfrage aus Datei
        }

        
 }

Beide Klassen bieten dir also die vom Vertrag geforderten Methoden an (implementieren die Schnittstelle). Die Art und Weise, wie sie die Methoden umsetzen ist aber grundverschieden (eine Klasse stellt einen DAtenbankzugriff her, die anderen liest aus einer Datei).


Der Vorteil hier ist, dass du jetzt den Personaldatenzugriff abstrahieren kannst:

Java:
...

 IPersonalDaten personalWirtschaft = new PersonalDatenDatabase();

//oder

 IPersonalDaten personalWirtschaft = new PersonalDatenFileBased();



personalWirtschaft.getGehalt("Max","Mustermann");

da dir beim Aufruf von .getGehalt egal ist, ob du auf einem PersonalDatenDatabase-Objekt oder einem PersonalDatenFileBased arbeitest.


Tante Edith sagt: Das hat doch der Bygones schonmal geschrieben. Naja, ist Freitag :toll:
 
Zuletzt bearbeitet:
M

MisterX

Gast
Danke für die Antworten und danke DerFeivel für die gute Erklärung.

Das hat mich weitergebracht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
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
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
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
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


Oben