Typen in C - AG Kastens - Universität Paderborn
Typen in C - AG Kastens - Universität Paderborn
Typen in C - AG Kastens - Universität Paderborn
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
4.2. Interfaces<br />
E<strong>in</strong> Interface def<strong>in</strong>iert Methoden, Properties, Events, die von e<strong>in</strong>er Klasse, wenn diese das<br />
Interface implementiert, die Methoden, Properties, Events etc. enthalten (implementieren) muss.<br />
Das Interface selber enthält ke<strong>in</strong>e Implementierungen sodern lediglich die Def<strong>in</strong>itionen, d.h. sie<br />
spezifiziert nur Members (Methoden, Properties, etc.) die <strong>in</strong> e<strong>in</strong>er Klasse implementiert werden,<br />
wenn diese Klasse das Interface implementiert. E<strong>in</strong>e Interface-Deklaration ist auch e<strong>in</strong>e Typ-<br />
Deklaration, nämlich e<strong>in</strong> Interface-Typ.<br />
Interface-Deklaration:<br />
<strong>in</strong>terface-modifier <strong>in</strong>terface identifier <strong>in</strong>terface-base <strong>in</strong>terface-body, wobei<br />
die Menge der Nicht-Term<strong>in</strong>ale aus <strong>in</strong>terface-modifier, identifier, <strong>in</strong>terface-base und <strong>in</strong>terfacebody<br />
und die Menge der Term<strong>in</strong>ale aus <strong>in</strong>terface bestehen.<br />
<strong>in</strong>terface-modifier: {new, public, protected, <strong>in</strong>ternal, private }<br />
Die Modifizierer public, protected, <strong>in</strong>ternal und private s<strong>in</strong>d wie <strong>in</strong> Klassen Zugriffsmodifizierer.<br />
Der mit new Modifizierer gekennzeichnete Interface ist nur <strong>in</strong> verschachtelten Interfaces erlaubt<br />
macht e<strong>in</strong> geerbtes Datenelement mit demselben Name „unsichtbar“.<br />
identifier: { Interface-Bezeichner }<br />
<strong>in</strong>terface-base: {<strong>in</strong>terface-type-list }<br />
Es ist wie <strong>in</strong> Java erlaubt von mehreren Interfaces zu erben. Die Liste der Interface-Bezeichner<br />
kann leer oder aus Interface-Bezeichner getrennt durch e<strong>in</strong> Komma bestehen.<br />
<strong>in</strong>terface-body: { ‘{‘<strong>in</strong>terface-member-declarations’}’ }<br />
E<strong>in</strong> Interface <strong>in</strong> C# kann neben Methoden (Signatur e<strong>in</strong>er Methode) wie <strong>in</strong> Java auch Property-<br />
Datenelemente, Ereignisse und Indexer – jeweils Signatur und nicht die Implementation –<br />
enthalten.<br />
Beispiele:<br />
public <strong>in</strong>terface IControl {<br />
// Methoden-Deklaration<br />
public void pa<strong>in</strong>t();<br />
}<br />
public <strong>in</strong>terface ITextBox : IControl { // Erweiter das Interface IControl<br />
public void setText(str<strong>in</strong>g text);<br />
}<br />
5. Box<strong>in</strong>g und Unbox<strong>in</strong>g<br />
Werttypen s<strong>in</strong>d effizienter als Referenztypen, weil sie nicht auf dem verwalteten Heap angelegt<br />
werden, nicht vom Garbage-Collector gelöscht werden und nicht durch Zeiger referenziert<br />
werden. In vielen Fällen braucht man aber e<strong>in</strong>en Verweis (Referenz) auf die Instanz e<strong>in</strong>es<br />
Werttyps. Angenommen es wurde e<strong>in</strong>e Klasse Liste def<strong>in</strong>iert, <strong>in</strong> der nur Objekte e<strong>in</strong>gefügt<br />
werden können. Falls man <strong>in</strong> diese Datenstruktur (Liste) e<strong>in</strong>e <strong>in</strong>t Variable e<strong>in</strong>fügen wollte, dann<br />
Seite 11 von 17