![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Gast
Beiträge: n/a
|
Hi, meine erste Frage ist, ich habe folgende interface-Klasse: Java Code:
Was für einen Sinn hat das? Da ist ja kein Rumpf definiert? 2. Frage wäre, was der Unterschied zu Vererbung genau ist. Danke schonmal. p-flash |
|
| | Nach oben #2 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.512
|
zunächst einmal möchte ich darauf hinweisen, dass du einen formulierungsfehler gemacht hast. es gibt keine "interface-klasse". entweder es ist eine klasse oder es ist ein interface du hast ein interface. in interfaces stehen nur die signaturen der methode, also das gerüst, der kopf .. wie du es auch nennen willst wenn du nun das interface implementierst ( implements ), dann musst du alle methoden, die in dem interface angegeben wurden implementieren .. (komischer satz naja. es heißt also, dass du z.b. in diesem beispiel hier: Java Code: die methode machWas( String text ) ausimplementieren MUSST. das ist eine pflicht. auf so etwas trifft man z.b. früh bei dem Interface "ActionListener" und der Methode "acitonPerformed( ActionEvent event ). falls dir das nichts sagt .. vergiss es eine klasse kann beliebig viele interface einbinden ... aber nur von einer klasse erben. das ist ein unterschied zu z.b. C++ wenn du nun vererbung hast .... bsp: Java Code:
oder so ähnlich du könntest jetzt in der klasse Auto z.b die methode machGeraeusch() überschreiben. das musst du aber nicht. wenn du z.b. so etwas machst Java Code: hm. war das verständlich erklärt? irgendwie bezweifle ich das jetzt im nachhinein ^^ naja. danke für das feedback ... bei fragen. raus damit grüße ben. |
| | |
| | Nach oben #3 |
| Gast
Beiträge: n/a
|
Also ich würde sagen ic hhabe es verstanden, wenn die Antwort auf folgende Frage ja ist: Sind interfaces also dafür, den Programmierer zu "zwingen" gewisse Methoden oder Attribute in sein Prgramm zuzufügen? Oder was habe ich flasch verstanden? Danke schonmal für die Antwort. p-flash |
|
| | Nach oben #4 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.512
|
hm. so würde ich das jetzt nicht beschreiben. also das problem ist .. ich denke es gibt keine pauschale antwort auf deine frage. der eine nutzt gerne interfaces, der andere gerne vererbung ein weiterer erbt gerne von adaptern, die ihrerseits ein interface implementieren. *einschub* ein adapter ist einfach eine klasse, die alle methoden, die ein interface fordert leer implementiert. also Java Code:
aber bzgl. deiner frage. ich kann dir das leider nicht so ganz zufriedenstellend beantworten. ich würde sagen, dass es am programmierstil, der anforderung und der programmstruktur liegt, was am günstigsten ist. fakt ist aber, dass .. ... mehrfachvererbung nicht möglich ist, .. mehrere interfaces implementiert werden können .. ein interface auch erben kann. durch das bereitstellen von interfaces schaffst du eien schnittstelle. da nur die methodensignatur feststeht, weißt du zwar wie die methode heißt und du solltest aufgrund des namens auch wissen was sie macht ... wie es implementiert ist ist dann aber erst mal nicht interessant. soweit .. vielleicht hat noch jemand eine bessere erklärung. grüße ben. |
| | |
| | Nach oben #6 | |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.512
|
hui. danke na. wie gesagt. ich würde da gerne noch eine erklärung von jemand anderem hören. ist ja schließlich immer besser mehrere meinungen zu haben grüße ben. nachtrag: -------- hier findet man noch eine kurze aussage, die eventuell noch hilfreich ist: Zitat:
auch interessant: Quelle: http://de.wikipedia.org/wiki/Schnitt...grammierung%29 da ist ganz gut beschrieben, was schnittstellen / interfaces so "machen" | |
| | |
| | Nach oben #7 |
| Gast
Beiträge: n/a
|
Also ... ihr wollt eine weiter Meinung zu dem Thema ... Interfaces werden oft dazu benutzt Schnittstellen festzulegen. z.B. du hast ein Tool programmiert, welches durch hinzufügen von weiteren Klassen von wildfremden Menschen (die deinen originalen Sourcecode nicht kennen !) erweitert werden kann (z.B. ein Editor, der durch Plugins um weitere Funktionalitäten erweitert werden kann). Um die Erweiterungen einbinden zu können müssen die aber bestimmte Bedingungen erfüllen. Machen wir doch mal ein kleines Beispiel: Java Code:
Java Code:
Java Code:
War das zu umständlich ?? OK ... dann eben noch ein zweites Beispiel: Du hast ein Tool welches mit GUI benutzt werden kann ... nun willst du aber (weil es so korrekter ist) die GUI von der Applikation trennen. Aber die GUI muss ja irgendwie an die Daten kommen, die sie anzeigen soll. Nehmen wir mal an, du hast in deiner Applikation eine Adressliste mit vielen tausenden und abertausenden Adressen. Nun willst du nicht jeden einzelnen String vond er Applikation zur GUI transferieren (kann man machen ... aber in unserem Beispiel geht das nicht - warum auch immer Java Code: Java Code: Java Code:
Java Code:
ich hoffe ich hab dich nicht all zu sehr gequält ... ich hab mir aber gedacht ... wenn dann richtig ... da das ein grundlegendes Thema in Java ist (haben andere Programmiersprachen auch sowas wie Interfaces ??). Um "richtig" zu code bzw. vorhandene Frameworks benutzen zu können muss man das Prinzip begriffen haben !!! Viel Spaß beim Ausprobieren ... Michael |
|
| | Nach oben #8 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.512
|
ich finde beide beispiele sehr gelungen. *applaus* das zweite wird für einen anfänger eventuell noch etwas zu hart sein, da du ja auch das fassaden-pattern verwendest, aber ich finde das hast du ganz gut beschrieben. btw: dann war ich aber mit meiner möchtegern-schnittstellen-beschreibung auch gar nicht sooooo weit von deiner erklärung weg also nochmals: *ThumbsUp* |
| | |
| | Nach oben #9 |
| Gast
Beiträge: n/a
|
was vielleicht in Bezug auf "Vererbung" noch ganz interessant ist: Normalerweise ist Vererbung dann sinnvoll wenn eine sog. "Ist ein" Beziehung besteht. Um auf Bens Beispiel zu verweisen: - Ein Auto ist ein Fahrzeug Oder: - Ein Kreis ist eine Figur Etc. pp.[/b] Bei Interfaces gilt außerdem: - alle deklarierten Methoden im Interface sind implizit "abstract public" - alle Attribute sind "final public static" |
|
| | Nach oben #10 |
| Gast
Beiträge: n/a
|
Das beste Beispiel für die Verwendung von Interfaces ist für mich das Event-Handling unter Java.. Diverse Beispiele hier: http://www.google.ch/search?hl=de&am...uche&meta= |
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Unterschied zwischen Kategorisierung (mehrfach) und tagging | Ben | Anwendungsdesign / Softwarearchitektur | 16 | 16.11.2007 01:39 |
| Unterschied zwischen Format der MySQL-Typen DATETIME und TIMESTAMP | Ben | Datenbanken | 9 | 20.08.2007 09:32 |
| Eigene Events auf ein Interface schicken. | missiju | Allgemeine Java-Programmierung | 2 | 08.12.2005 22:38 |
| Unterschied zwischen $_SERVER['REQUEST_TIME'] und time() | Ben | PHP-Programmierung | 13 | 12.11.2005 22:03 |
| Unterschied zwischen HashMap und Hashtable? | Linuxhippy | Allgemeine Java-Programmierung | 4 | 18.10.2004 13:37 |