%% -*- mode: latex; TeX-master: "informatik.tex"; -*-

\begin{slide}{Überschreiben von Methoden}

\kopf{$ $Id: over.tex,v 1.1 2006-10-09 13:24:18 waldmann Exp $ $}

Abgeleitete Klassen können Methoden der Basisklasse 
neu implementieren (\emph{überschreiben}).

\begin{minipage}{0.5\textwidth}
\begin{verbatim}
class C { 
  int a; 
  void m () { ... } 
}
\end{verbatim}
\end{minipage}
\rule[-2.5cm]{1pt}{5cm}
\begin{minipage}{0.45\textwidth}
\begin{verbatim}
class D extends C {
  void m () { ... }
}
\end{verbatim}
\end{minipage}
Es wird immer die \emph{speziellste} Methode benutzt:
\begin{verbatim}
C x; x.m ();  D y; y.m ();
\end{verbatim}

\end{slide}
\begin{slide}{Überschreiben $\neq$ Überladen}

\begin{itemize}\itemsep 0pt
\item \emph{Überschreiben}:
  Methoden 
  \begin{itemize}\itemsep 0pt
  \item
    in \emph{verschiedenen} Klassen, 
  \item
    mit \emph{übereinstimmender} Schnittstelle
  \end{itemize}
\item \emph{Überladen}:
  Methoden 
  \begin{itemize}\itemsep 0pt
  \item
    in \emph{einer} Klasse, 
  \item
    mit \emph{unterschiedlicher} Schnittstelle
  \end{itemize}
\end{itemize}
\begin{small}
\begin{verbatim}
class C { int  f (int x) { .. }
          int  f (String x) { .. }
          void g (boolean y) { .. }
}
class D extends C { int f (int x) { .. }
          void g (boolean y, String z) { .. }
}
\end{verbatim}
\end{small}

\end{slide}
