Einfachvererbung
This commit is contained in:
parent
9e37822721
commit
8ad2433d0d
BIN
verfahren.pdf
BIN
verfahren.pdf
Binary file not shown.
@ -139,10 +139,34 @@
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{Einfachvererbung}
|
||||
|
||||
\subsubsection{Dynamischer Methodenaufruf}
|
||||
|
||||
\subsubsection{Casts/Typprüfung zur Laufzeit}
|
||||
\begin{itemize}
|
||||
\item Attribute aus Oberklasse \texttt{O} liegen auch in Unterklasse \texttt{U} am selben statischen Offset zum Objektanfang $\rightarrow$ einfacher, statischer Zugriff
|
||||
\item Objekt enthält Zeiger auf Klassendeskriptor
|
||||
\item Klassendeskriptor enthält:\begin{itemize}
|
||||
\item V-Table mit Adressen der Funktionen(Indizes in Tabelle wie Attribute)
|
||||
\item Verweis auf Klassendeskriptor der Elternklasse
|
||||
\end{itemize}
|
||||
\item Dynamischer Methodenaufruf: \begin{enumerate}
|
||||
\item Verfolgung des Zeigers zum Klassendeskriptor
|
||||
\item Index in V-Table im Klassendeskriptor ist für auszuführende Methode bereits vom Compiler bekannt
|
||||
\item Indirekter Sprung
|
||||
\end{enumerate}
|
||||
\item Casts: \begin{itemize}
|
||||
\item Upcasts können vom Übersetzer verifiziert werden
|
||||
\item Downcasts müssen zur Laufzeit überprüft werden:\begin{itemize}
|
||||
\item ohne Display: \begin{enumerate}
|
||||
\item Verfolgung des Zeigers zum Klassendeskriptor
|
||||
\item Vergleich des Klassendeskriptors des Objekts mit Klassendeskriptor der Zielklasse
|
||||
\item Solange keine Übereinstimmung, Vergleich mit Klassendeskriptor der Elternklasse
|
||||
\item Beim Erreichen von gesuchtem Klassendeskriptor ist Casts erlaubt, ansonsten Laufzeitfehler
|
||||
\end{enumerate}
|
||||
\item mit Display: \begin{enumerate}
|
||||
\item (maximale) Vererbungstiefe statisch feststellbar $\rightarrow$ pro Klasse kann Array aus Oberklassen angelegt werden
|
||||
\item Zur Überprüfung in Array vergleichen, ob an (statisch aus der Schachtelungstiefe bekannter) Position der Zielklasse wirklich Zielklasse eingetragen ist
|
||||
\end{enumerate}
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Interfaces}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user