<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\begin{slide}{Schnittstellen}

Eine Methode ohne Implementierung heißt \emph{abstrakt}
(Gegenteil von: \emph{konkret})

Eine Klasse mit wenigstens einer abstrakten Methode
muß als \verb|abstract class| deklariert sein.

Abstrakte Klassen haben keine Objekte
(können nicht instantiiert werden)\dots

\dots man kann aber von ihnen konkrete Klassen 
\emph{ableiten} (durch Implementieren der abstrakten Methoden).

Eine abstrakte Klasse mit nur abstrakten Methoden
wird kürzer als Schnittstelle (\verb|interface|) bezeichnet.

\end{slide}

\begin{slide}{Schnittstellen (Beispiel)}

Deklaration:
\begin{verbatim}
interface List&lt;T&gt; { T get (int index); ... }
\end{verbatim}

Implementierungen:
\begin{small}
\begin{verbatim}
class LinkedList&lt;T&gt; implements List&lt;T&gt; 
   { T get (int index) { ... } }
class ArrayList&lt;T&gt; implements List&lt;T&gt; 
   { T get (int index) { ... } }
\end{verbatim}
\end{small}

Benutzung:
\begin{verbatim}
{  List&lt;String&gt; l = new LinkedList&lt;String&gt; ();
   ... l.get (3) ...
}
\end{verbatim}
Deklarierter Typ sollte Interface sein (nicht Klasse). \\
(Zum polymorphen Containern siehe Vorlesung OO.)

\end{slide}
</pre></body></html>