Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: FAQ - Java ::  Interface     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Helpi
Unregistrierter




Beitrag Helpi Unregistrierter 19:43:00 11.04.2002   Titel:   Interface            Zitieren

Helft mir dringend weiter, bitte...
Ich sehe den Sinn einfach nicht eines Interfaces!!!
Könnt ihr mir dies bitte genauer Erklären? Nutzen?
MfG

Helpi
Werbeunterbrechung
Twiggy Ramirez
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.03.2002
Beiträge: 101
Beitrag Twiggy Ramirez Mitglied 10:06:00 12.04.2002   Titel:              Zitieren

Mehrfachvererbung.

_________________
C++? Is that a kind of toilet paper?
CengizS
Moderator

Benutzerprofil
Anmeldungsdatum: 28.05.2001
Beiträge: 3502
Beitrag CengizS Moderator 11:31:00 12.04.2002   Titel:              Zitieren

@Twiggy
Genau das ist falsch

Mit Interfaces soll keine Mehrfachvererbung gemacht werden sondern lediglich den implementierenden Klassen vorgeschrieben werden, welche Methoden zu implementieren sind. Im Gegensatz zu Abstrakten Klassen ist eine Klasse die keine Methode aus der Interface-Definition implementiert nämlich nicht auch ein Interface sondern schlicht illegal. Wenn eine Klasse die Methoden aus der abstrakten Klasse nicht implementiert ist diese jedoch ebenfalls abstrakt.

_________________
Viele Grüße, Cengiz Şahin
helpi
Unregistrierter




Beitrag helpi Unregistrierter 14:30:00 12.04.2002   Titel:              Zitieren

Und nun auf Deutsch? Bitte, ich würde nur gerne den Sinn verstehen von Interfaces...

Wenn es geht ein wenig simpler...

Greez
CengizS
Moderator

Benutzerprofil
Anmeldungsdatum: 28.05.2001
Beiträge: 3502
Beitrag CengizS Moderator 16:05:00 12.04.2002   Titel:              Zitieren

Hmmm ich dachte eigentlich immer, dass mein Deutsch ausreichend sei aber na gut ...

Interfaces beschreiben Typen, die aus Methodensignaturen und Konstanten bestehen, ohne ihre Implementierung anzugeben. Diese Typen werden von Klassen ausgefüllt, indem die geforderten Methodensignaturen mit Funktionalität ergänzt werden. Interfaces, oder zu deutsch Schnittstellen, sind im Wesentlichen abstrakte Klassen.

Interfaces können auch einfach als Gruppierungen von Funktionen aufgefaßt werden, von denen sichergestellt ist, daß die Klassen, die Schnittstellen implementieren, mindestens die Funktionalität für eben diese Funktionen bereitstellen.

Interfaces enthalten im Gegensatz zu abstrakten Klassen überhaupt keine implementierten Methoden; alle Methoden existieren nur als Funktionssignaturen. Eine Schnittstelle legt somit eine Menge von Methoden fest, die bei einem Objekt angwendet werden können. Abstrakte Klassen dagegen enthalten zum Teil bereits implementierte Methoden, um den von ihnen abgeleiteten Klassen ein gewisses Grundverhalten mitzugeben.

Das fettgedruckte oben beschreibt den Unterschied Interface <-> Abstrakte Klassse.

Ich hoffe dies ist nun richtiges Deutsch [img]images/smiles/icon_smile.gif[/img]

_________________
Viele Grüße, Cengiz Şahin
Helpi
Unregistrierter




Beitrag Helpi Unregistrierter 22:23:00 14.04.2002   Titel:              Zitieren

Vielen Dank!!!
Hat mir sehr weitergeholfen...

Thanks...

Helpi
Helium
Mitglied

Benutzerprofil
Anmeldungsdatum: 31.03.2002
Beiträge: 3535
Beitrag Helium Mitglied 15:47:00 20.04.2002   Titel:              Zitieren

@CengizS

Intefaces haben aber den Vorteil, Mehrfachvererbungstauglich zu sein.


Vorallem dienensie dazu Parameter für Funktionen zu sein. Jede Klasse die dieses Interface implementeirt, kann als Parameter für diese verwendet werden.

_________________
Manual memory management is premature optimization.
Twiggy Ramirez
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.03.2002
Beiträge: 101
Beitrag Twiggy Ramirez Mitglied 21:31:00 20.04.2002   Titel:              Zitieren

Pass auf, dass du Cengiz nicht zu sehr provozierst. Er ist auf das Thema Mehrfachvererbung schlecht zu sprechen. Ich hab von ihm deshalb auch schon was auf den Mund gekriegt, er sagt es ist falsch, und nicht nur das, er hat es auch noch fett geschrieben!
Trotzdem bin ich immernoch der Meinung, dass Interfaces in erster Linie dazu dienen, das in Java unzulässige Erben von mehreren Vaterklassen zu kompensieren.

_________________
C++? Is that a kind of toilet paper?
O'Dog
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.05.2000
Beiträge: 1198
Beitrag O'Dog Mitglied 04:06:00 21.04.2002   Titel:              Zitieren

Zitat:
Original erstellt von Twiggy Ramirez:
Pass auf, dass du Cengiz nicht zu sehr provozierst. Er ist auf das Thema Mehrfachvererbung schlecht zu sprechen.


Jaa, pass bloß auf, sonst kommt der böse Cengiz zu dir nach Hause
und dann gibs ordentlich Haue;)

O'Dog

_________________
Ich war Atheist, bis ich erkannte, dass ich Gott bin.
O'Dog
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.05.2000
Beiträge: 1198
Beitrag O'Dog Mitglied 04:08:00 21.04.2002   Titel:              Zitieren

Übrigens lassen sich interfaces "mehrfachvererben"

[ Dieser Beitrag wurde am 21.04.2002 um 04:19 Uhr von O'Dog editiert. ]

_________________
Ich war Atheist, bis ich erkannte, dass ich Gott bin.
CengizS
Moderator

Benutzerprofil
Anmeldungsdatum: 28.05.2001
Beiträge: 3502
Beitrag CengizS Moderator 11:31:00 21.04.2002   Titel:              Zitieren

@Twiggy: Was heisst denn hier "auf den Mund geschlagen"? Es geht hier nur um eine rein objektive Beantwortung einer Frage. Es gibt in der Tat keine Mehrfachvererbung in Java und das Implementieren eines Interfaces stellt auch keine solche da.

Es geht bei Interfaces nur darum einer Klasse vom Typ X vorzuschreiben, welche Methoden sie implementieren muss um sich "Y-able" zu schimpfen. Nicht zuletzt deswegen werden viele Interfaces mit Adjektiven benannt. "Comparable", "Runnable", "Serializable" etc. pp. Nur die Tatsache, dass man - wie O'Dog schon angedeutet hat - mehrere Interfaces implementieren kann ist kein Beweis für Mehrfachvererbung zumal man in Interfaces keine fertig implementierte Methode schreiben kann (ganz im Gegensatz zu abstrakten Klassen).

[ Dieser Beitrag wurde am 21.04.2002 um 11:36 Uhr von CengizS editiert. ]

_________________
Viele Grüße, Cengiz Şahin
CengizS
Moderator

Benutzerprofil
Anmeldungsdatum: 28.05.2001
Beiträge: 3502
Beitrag CengizS Moderator 11:39:00 21.04.2002   Titel:              Zitieren

@Helium: In der Tat kann man mehrere Interfaces implementieren und ein Interface kann auch von mehreren Interfaces "abgeleitet" werden. Da man aber nie ein Objekt eines Interfaces (direkt) erzeugen kann ist damit die "Mehrfachvererbung" wieder weg, da sie nicht direkt nutzbar ist.

_________________
Viele Grüße, Cengiz Şahin
elise
Mitglied

Benutzerprofil
Anmeldungsdatum: 18.05.2001
Beiträge: 8095
Beitrag elise Mitglied 14:23:00 21.04.2002   Titel:              Zitieren

ich finde, diese auseinandersetzung könnte ins faq.. interfaces gibts da noch nicht..

_________________
There's An App For That
O'Dog
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.05.2000
Beiträge: 1198
Beitrag O'Dog Mitglied 14:31:00 21.04.2002   Titel:              Zitieren

Zitat:
Original erstellt von CengizS:
Nur die Tatsache, dass man - wie O'Dog schon angedeutet hat - mehrere Interfaces implementieren kann ist kein Beweis für Mehrfachvererbung zumal man in Interfaces keine fertig implementierte Methode schreiben kann (ganz im Gegensatz zu abstrakten Klassen).


Ich meinte eigentlich nicht das mehrfache Implementieren(im Sinne von implements) von Interfaces, sondern die tatsächliche Mehrfachvererbung
bei Interfaces selbst (nicht zu verwechseln mit Klassen-Vererbung).

wie z.B.:

public interface Effenberg {
public void mundZu();
}

public interface Stefan {
public void mundAuf();
}

public interface Playboy extends Stefan, Effenberg {
public void blubBlub();
}
hier: Mehrfachvererbung von Interfaces

public class TestMultiple implements Playboy...usw.

bis dänn, O'Dog

_________________
Ich war Atheist, bis ich erkannte, dass ich Gott bin.
Parry
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.07.2001
Beiträge: 163
Beitrag Parry Mitglied 14:40:00 21.04.2002   Titel:              Zitieren

@O'Dog

Das ist keine! Mehrfachvererbung. Das ist nicht mal eine ganz normale Vererbung. Vererbung bedeutet (unter anderem), dass du die Methoden von der geerbten Klasse mitbenutzen kannst. Dieses ist aber bei Interfaces nicht der Fall, du MUSST alle Methoden selbst implementieren.

Egal was du anstellst, Java hat keine Mehrfachvererbung (und braucht es auch nicht) ;)
O'Dog
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.05.2000
Beiträge: 1198
Beitrag O'Dog Mitglied 15:31:00 21.04.2002   Titel:              Zitieren

Na ja, im Prinzip sind wir uns ja alle einig, geht eigentlich nur um die Begrifflichkeiten.
Fakt ist das die Methodensignaturen bei einem Subinterface von dem Superinterface geerbt/abgeleitet werden, ein Subinterface kann Methodensignaturen von mehreren Superinterfaces erben/ableiten.

Nennt es Mehrfachvererbung von Interfaces oder
Multiple Ableitbarung ;) damit ist das Kind getauft.

O'Dog

_________________
Ich war Atheist, bis ich erkannte, dass ich Gott bin.
Parry
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.07.2001
Beiträge: 163
Beitrag Parry Mitglied 18:02:00 21.04.2002   Titel:              Zitieren

Na Interfaces implementiert man.
Also würde ich Mehrfachimplementierung sagen :p
O'Dog
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.05.2000
Beiträge: 1198
Beitrag O'Dog Mitglied 18:43:00 21.04.2002   Titel:              Zitieren

Hmm, parry, ich glaub wir haben uns immer noch nicht verstanden.

es geht mir nicht um:
public class MyClass implements InterfaceA, InterfaceB

sondern um:
public interface InterfaceA extends InterfaceB, InterfaceC

_________________
Ich war Atheist, bis ich erkannte, dass ich Gott bin.
CengizS
Moderator

Benutzerprofil
Anmeldungsdatum: 28.05.2001
Beiträge: 3502
Beitrag CengizS Moderator 19:36:00 21.04.2002   Titel:              Zitieren

@O'Dog

Ja es heisst
Code:
public interface XYZ extends ABC
Code:
public interface XYZ extends ABC
Code:
public interface XYZ extends ABC
allerdings wird hier nichts vererbt :)

Vielmehr wird mit dieser Art von Delaration nur das Methodenset des Interfaces XYZ mit denen aus ABC sprichwörtlich erweitert. Dies kann man nennen wie man will - ab jetzt gehts in diesem Thread ja auch nur noch um "Begriffsdefinition" für den einen ist das Glas halb voll - für den anderen halb leer. :) :)

In diesem Sinne einen schönen Sonntag ;)

_________________
Viele Grüße, Cengiz Şahin
Parry
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.07.2001
Beiträge: 163
Beitrag Parry Mitglied 20:06:00 21.04.2002   Titel:              Zitieren

@O'Dog

Ah, jetzt ist mir klar was du meinst.
Dafür kenne ich wirklich keinen eigenen Namen.
O'Dog
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.05.2000
Beiträge: 1198
Beitrag O'Dog Mitglied 20:15:00 21.04.2002   Titel:              Zitieren

Na ja, wie auch immer...
jetzt kommt Episode 1 (inkl. 45min Werbung - Rekord) ;)

_________________
Ich war Atheist, bis ich erkannte, dass ich Gott bin.
C/C++ Forum :: FAQ - Java ::  Interface   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.