Nochmal Interfaces/Schnittstellen (eine andere Betrachtung)
leerer, 11:22h
Einleitung
Es gibt in der Programmiersprache Java Sprachkonstrukte, die ähnlich wie Klassen verfügbar sind bzw. verfügbar gemacht werden können. Diese Konstrukte heissen Interfaces (Schnittstellen)
Im Gegensatz zu Klassen sind die Methoden von Interfaces jedoch nicht ausprogrammiert (also implementiert ).
Die Methoden von Interfaces stellen nur die Signaturen von Methoden zur Verfügung.
Wer ein solches Interface benutzen will, muss daher alle Methoden des Interfaces implementieren und zwar genau nach dem Muster der Methodensignatur.
Die Benutzung von Interfaces hat den Vorteil der Vereinheitlichung von Code :
Ein Interface sieht für alle Benutzer gleich aus.
Das Interface Comparable bespielsweise bietet eine Methode mit der Signaturint compareTo(Object o);
an.
Es wird aus naheliegenden Gründen von vielen Java-Klassen, für deren Objekte nämlich Vergleiche sinnvoll sind, benutzt oder wie man sagt implementiert. Z.B von Double, Integer, String .
Zur Technik
Es gibt in der Programmiersprache Java Sprachkonstrukte, die ähnlich wie Klassen verfügbar sind bzw. verfügbar gemacht werden können. Diese Konstrukte heissen Interfaces (Schnittstellen)
Im Gegensatz zu Klassen sind die Methoden von Interfaces jedoch nicht ausprogrammiert (also implementiert ).
Die Methoden von Interfaces stellen nur die Signaturen von Methoden zur Verfügung.
Wer ein solches Interface benutzen will, muss daher alle Methoden des Interfaces implementieren und zwar genau nach dem Muster der Methodensignatur.
Die Benutzung von Interfaces hat den Vorteil der Vereinheitlichung von Code :
Ein Interface sieht für alle Benutzer gleich aus.
Das Interface Comparable bespielsweise bietet eine Methode mit der Signatur
Es wird aus naheliegenden Gründen von vielen Java-Klassen, für deren Objekte nämlich Vergleiche sinnvoll sind, benutzt oder wie man sagt implementiert. Z.B von Double, Integer, String .
Zur Technik
- Soll eine Klasse ein vorhandenes Interface implementieren, so schreibt man
public class Klassenname inplements Interface-Name
Z. B. public class Apfel implements Comparable - Danach muß die entsprechende Klasse z.B. die Apfelklasse die Methode int CompareTo(Object o) implementieren.
- Ist die Methode implementiert und man will ein Apfelobjekt erzeugen, dann sind folgende Möglichkeiten dazu gegeben:
- Apfel a=new Apfel(1,120);
- Comparable b=new Apfel(3,20);
- Bei der Implementierung der Methode CompareTo(Object o) tritt jedoch ein Problem auf :
Der Parameter Object o, verfügt nicht über die Eigenschaften eines Apfels: Also Gewicht( gew ) und Güteklasse gue. Dem kann jedoch dadurch abgeholfen werden, dass man das Objekt o in ein Objekt vom Typ Apfel umcastet.((Apfel)o).gew stellt das Gewicht gew des in einen Apfel umgecasteteten Objektes o dar.
Ein Cast ( übersetzt : Gipsverband ) hat folgende allgemeine Syntax :(Typ)Ausdruck. Ein cast führt eine expizite (vom Programm erzwungene ) Typumwandlung durch.
Nach Anwendung eines castes stellt diese Konstruktion den Wert Ausdruck mit dem Datentyp Typ dar.
Nach float f=(float)4/3 hat f den Wert 1.33... und nicht den Wert 0. ,welchen es ohne cast hätte.
(float)4 hat den Datentyp float.( 4 ist int)
Mittwoch, 9. Juni 2004, 11:22, von leerer |
|comment
