Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
2.3 Vererbung, Konstruktor und Redefinition<br />
Die Methode setFont() verlangt als Parameter eine Instanz der Klasse Font, welche<br />
in der Klassenbibliothek enthalten ist.<br />
Der Konstruktor der Klasse Font verlangt drei Parameter. Beim ersten handelt es sich um<br />
den Namen der Schriftart. Welche Schriftarten vom System unterstützt werden, ist<br />
natürlich plattformspezifisch 1 . Der zweite Parameter gibt den zu verwendenden Stil, also<br />
PLAIN, BOLD, oder ITALIC an. Diese Stiltypen sind als Attribute der Klasse Font<br />
deklariert. Der letzte Parameter bestimmt die Grösse in Punkten.<br />
Sowohl die Klasse Graphics als auch Font sind Teil des package awt.<br />
2.3.1.4 paint() und Redefinition<br />
Abschliessend wollen wir uns noch eingehender die paint() Methode betrachten. Wie<br />
aus dem Programm hervorgeht, wird diese Methode nur deklariert, aber nirgends im<br />
Programm explizit aufgerufen. Abbildung 2-6 macht jedoch offenkundig, dass die<br />
Methode sicherlich für jedes Objekt der Klasse Card einmal ausgeführt worden sein<br />
muss, ansonsten wäre keine Adresse auf der Visitenkarte vorhanden. Der Aufruf der<br />
Methode paint() ist nicht in der Kontrolle des Programmierers, sondern in der des<br />
Systems. Dieses ruft die Methode auf, wenn eine Component das erste mal gezeichnet<br />
wird oder erneut gezeichnet werden muss. Letzteres ist beispielsweise der Fall, wenn der<br />
Benutzer die Grösse einer Component verändert oder wenn eine Component<br />
vorübergehend nicht sichtbar war, weil sie von einer anderen Komponente verdeckt wurde.<br />
Wie man auch aus der Klassenbibliothek entnehmen kann, ist die paint() Methode<br />
bereits in der Klasse Container deklariert. Die neuerliche Vereinbarung dieser Methode<br />
in der Klasse Card wird als Redefinition bezeichnet. Unter Redefinition versteht man das<br />
Erweitern oder Neudefinieren einer ererbten Methode, indem man deren<br />
Methodenschnittstelle zwar beibehält, jedoch deren Rumpf erweitert bzw. neu definiert.<br />
Das Überschreiben des Rumpfes der ererbten Methode ist als method overriding bekannt.<br />
Nebst der Eigenschaft, dass die Methode paint() immer dann durch das System<br />
aufgerufen wird, wenn eine Component aufdatiert werden muss, hat sie noch einen<br />
weiteren Vorteil: sie liefert ohne Aufruf eines Konstruktors das benötigte Objekt der<br />
Klasse Graphics.<br />
1 Der Aufruf Toolkit.getDefaultToolkit().getFontList() liefert eine Liste derjenigen<br />
Schriften, welche standardmässig von jedem System unterstützt werden sollten.<br />
48