1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
|
<html>
<head>
<title>
Handbuch der Java-Programmierung, 5. Auflage
</title>
</head>
<body>
<a name="startofbody"></a>
<script language="JavaScript" src="hjp4lib.js">
</script>
<script language="JavaScript">
installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100051.html;106,k100052.html;107,k100054.html;108,k100057.html");
</script>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100051.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100052.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100054.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100057.html"> >> </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
<td align="right">Kapitel 8 - OOP II: Vererbung, Polymorphismus und statische Elemente
</table>
<hr>
<!-- Section -->
<a name="modifier"></a>
<h2>8.2 <a name="ixa100516">Modifier</a></h2>
<hr>
<ul>
<li><a href="k100053.html#modifier">8.2 Modifier</a>
<ul>
<li><a href="k100053.html#sectlevel3id008002001">8.2.1 Sichtbarkeit</a>
<li><a href="k100053.html#sectlevel3id008002002">8.2.2 Die Attribute im Überblick</a>
<ul>
<li><a href="k100053.html#sectlevel4id008002002001">private</a>
<li><a href="k100053.html#sectlevel4id008002002002">protected</a>
<li><a href="k100053.html#sectlevel4id008002002003">public</a>
<li><a href="k100053.html#sectlevel4id008002002004">Standard (package scoped)</a>
<li><a href="k100053.html#sectlevel4id008002002005">static</a>
<li><a href="k100053.html#sectlevel4id008002002006">final</a>
<li><a href="k100053.html#sectlevel4id008002002007">transient</a>
<li><a href="k100053.html#sectlevel4id008002002008">volatile</a>
</ul>
</ul>
</ul>
<hr>
<p>
In diesem Kapitel wurden an verschiedenen Stellen Beispiele gezeigt,
in denen Schlüsselwörter wie <a href="index_p.html#ixb100084"><font color=#000080><tt>public</tt></font></a>
oder <a href="index_p.html#ixb100085"><font color=#000080><tt>private</tt></font></a>
zusammen mit bestimmten Programmelementen verwendet wurden. Mit Hilfe
dieser Attribute können die Eigenschaften von Klassen, Methoden
und Variablen verändert werden. Sie haben insbesondere Einfluss
auf die <a name="ixa100517"><i>Lebensdauer</i></a>, <i>Sichtbarkeit</i>
und <a name="ixa100518"><i>Veränderbarkeit</i></a> dieser Programmelemente
und werden meist als <i>Modifier</i> bezeichnet. Wir wollen sie nun
im Zusammenhang betrachten und ihre Wirkungsweise auf die verschiedenen
Elemente eines Java-Programms erläutern.
<!-- Section -->
<a name="sectlevel3id008002001"></a>
<h3>8.2.1 <a name="ixa100519">Sichtbarkeit</a></h3>
<p>
Die eingangs erwähnte Tatsache, dass in einer abgeleiteten Klasse
alle Eigenschaften der Basisklasse übernommen werden, ist nicht
in allen Fällen ganz korrekt. Zwar besitzt sie immer alle Variablen
und Methoden der Basisklasse, kann aber unter Umständen nicht
darauf zugreifen, wenn ihre Sichtbarkeit eingeschränkt wurde.
<p>
Die Sichtbarkeit von Variablen und Methoden wird mit Hilfe folgender
Modifier geregelt:
<ul>
<li>Elemente des Typs <a name="ixa100520"><a href="index_p.html#ixb100084"><font color=#000080><tt>public</tt></font></a></a>
sind in der Klasse selbst (also in ihren Methoden), in Methoden abgeleiteter
Klassen und für den Aufrufer von Instanzen der Klasse sichtbar.
<li>Elemente des Typs <a name="ixa100521"><a href="index_p.html#ixb100086"><font color=#000080><tt>protected</tt></font></a></a>
sind in der Klasse selbst und in Methoden abgeleiteter Klassen sichtbar.
Zusätzlich können Klassen desselben Pakets sie aufrufen.
<li>Elemente des Typs <a name="ixa100522"><a href="index_p.html#ixb100085"><font color=#000080><tt>private</tt></font></a></a>
sind lediglich in der Klasse selbst sichtbar. Für abgeleitete
Klassen und für Aufrufer von Instanzen bleiben <a href="index_p.html#ixb100085"><font color=#000080><tt>private</tt></font></a>-Variablen
verdeckt.
<li>Elemente, die ohne einen der drei genannten Modifier deklariert
wurden, werden als <a name="ixa100523"><i>package scoped</i></a> oder
Elemente mit <a name="ixa100524"><i>Standard-Sichtbarkeit</i></a>
bezeichnet. Sie sind nur innerhalb des Pakets sichtbar, zu dem diese
Klasse gehört. In anderen Paketen sind sie dagegen unsichtbar.
</ul>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#0099CC"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=1></td>
<td width=1 align=left valign=top bgcolor="#0099CC"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>
<p>
Mit Hilfe dieser Sichtbarkeitsebenen kann der Zugriff auf Klassenelemente
eingeschränkt werden. <a href="index_p.html#ixb100085"><font color=#000080><tt>private</tt></font></a>-Elemente
sollten immer dann verwendet werden, wenn implementierungsabhängige
Details zu verstecken sind, die auch in abgeleiteten Klassen nicht
sichtbar sein sollen. <a href="index_p.html#ixb100086"><font color=#000080><tt>protected</tt></font></a>-Elemente
sind vor Zugriffen von außen geschützt, können aber
von abgeleiteten Klassen verwendet werden. Die <a href="index_p.html#ixb100084"><font color=#000080><tt>public</tt></font></a>-Elemente
schließlich bilden die für alle sichtbaren Teile einer
Klassendefinition und können daher als ihre Schnittstelle angesehen
werden. Nachfolgend werden die verschiedenen Sichtbarkeitsattribute
noch einmal genau beschrieben. Elemente mit Standard-Sichtbarkeit
verhalten sich innerhalb des Pakets wie <a href="index_p.html#ixb100084"><font color=#000080><tt>public</tt></font></a>-
und außerhalb wie <a href="index_p.html#ixb100085"><font color=#000080><tt>private</tt></font></a>-Elemente.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#0099CC">
<tr>
<td><font color="#FFFFFF"> Tipp </font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#0099CC"><img src="trp1_1.gif"></td>
</tr>
</table>
<!-- Section -->
<a name="sectlevel3id008002002"></a>
<h3>8.2.2 Die Attribute im Überblick </h3>
<p>
Nachfolgend wollen wir die wichtigsten Attribute noch einmal zusammenfassend
darstellen und ihre jeweiligen Auswirkungen auf die Sichtbarkeit,
Lebensdauer oder Veränderbarkeit von Variablen, Methoden und
Klassen beschreiben.
<!-- Section -->
<a name="sectlevel4id008002002001"></a>
<h4>private </h4>
<p>
Methoden oder Variablen vom Typ <a name="ixa100525"><a href="index_p.html#ixb100085"><font color=#000080><tt>private</tt></font></a></a>
sind nur in der aktuellen Klasse sichtbar, in allen anderen Klassen
bleiben sie dagegen unsichtbar.
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>
<p>
Diese Einschränkung bedeutet überraschenderweise nicht,
dass die Methoden einer Klasse nur auf die privaten Membervariablen
des eigenen Objekts zugreifen dürfen. Vielmehr ist ebenfalls
möglich, (quasi von außen) auf die <a href="index_p.html#ixb100085"><font color=#000080><tt>private</tt></font></a>-Variablen
eines <i>anderen</i> Objekts zuzugreifen. Vorausgesetzt, es handelt
sich um eine Instanz derselben Klasse.
<p>
Das folgende Beispielprogramm demonstriert dies mit Hilfe der Klasse
<font color="#000077"><tt>ClassWithPrivateA</tt></font>, die eine
private Membervariable <font color="#000077"><tt>a</tt></font> besitzt.
An der Implementierung von <font color="#000077"><tt>setOtherA</tt></font>
können wir erkennen, wie der Zugriff auf fremde Objekte desselben
Typs möglich ist:
<a name="listingid008006"></a>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
<tr>
<td valign=top>
<font color="#000055">
<pre>
<font color="#555555">001 </font><font color="#00AA00">/* Listing0806.java */</font>
<font color="#555555">002 </font>
<font color="#555555">003 </font><font color="#0000AA">public</font> <font color="#0000AA">class</font> Listing0806
<font color="#555555">004 </font>{
<font color="#555555">005 </font> <font color="#0000AA">public</font> <font color="#0000AA">static</font> <font color="#006699">void</font> main(String[] args)
<font color="#555555">006 </font> {
<font color="#555555">007 </font> ClassWithPrivateA a1 = <font color="#0000AA">new</font> ClassWithPrivateA(7);
<font color="#555555">008 </font> ClassWithPrivateA a2 = <font color="#0000AA">new</font> ClassWithPrivateA(11);
<font color="#555555">009 </font> a2.setOtherA(a1, 999);
<font color="#555555">010 </font> System.out.println(<font color="#0000FF">"a1 = "</font> + a1.toString());
<font color="#555555">011 </font> System.out.println(<font color="#0000FF">"a2 = "</font> + a2.toString());
<font color="#555555">012 </font> }
<font color="#555555">013 </font>}
<font color="#555555">014 </font>
<font color="#555555">015 </font><font color="#0000AA">class</font> ClassWithPrivateA
<font color="#555555">016 </font>{
<font color="#555555">017 </font> <font color="#0000AA">private</font> <font color="#006699">int</font> a;
<font color="#555555">018 </font>
<font color="#555555">019 </font> <font color="#0000AA">public</font> ClassWithPrivateA(<font color="#006699">int</font> a)
<font color="#555555">020 </font> {
<font color="#555555">021 </font> <font color="#006699">this</font>.a = a;
<font color="#555555">022 </font> }
<font color="#555555">023 </font>
<font color="#555555">024 </font> <font color="#0000AA">public</font> <font color="#006699">void</font> setOtherA(ClassWithPrivateA other, <font color="#006699">int</font> newvalue)
<font color="#555555">025 </font> {
<font color="#555555">026 </font> other.a = newvalue;
<font color="#555555">027 </font> }
<font color="#555555">028 </font>
<font color="#555555">029 </font> <font color="#0000AA">public</font> String toString()
<font color="#555555">030 </font> {
<font color="#555555">031 </font> <font color="#0000AA">return</font> <font color="#0000FF">""</font> + a;
<font color="#555555">032 </font> }
<font color="#555555">033 </font>}</pre>
</font>
</td>
<td valign=top align=right>
<a href="../examples/Listing0806.java"><font color="#000055" size=-1>Listing0806.java</font></a></td>
</tr>
</table>
<i>
Listing 8.6: Zugriff auf fremde private Membervariablen</i></p>
</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
<tr>
<td><font color="#FFFFFF"> Hinweis </font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
</tr>
</table>
<p>
An der Ausgabe des Programms kann man erkennen, dass über das
Objekt <i>a2</i> auf private Membervariablen des Objekts <i>a1</i>
zugegriffen wurde:
<font color="#000077">
<pre>
a1 = 999
a2 = 11
</pre>
</font>
<!-- Section -->
<a name="sectlevel4id008002002002"></a>
<h4>protected </h4>
<p>
Methoden oder Variablen vom Typ <a name="ixa100526"><a href="index_p.html#ixb100086"><font color=#000080><tt>protected</tt></font></a></a>
sind in der aktuellen Klasse und in abgeleiteten Klassen sichtbar.
Darüber hinaus sind sie für Methoden anderer Klassen innerhalb
desselben Pakets sichtbar. Sie sind jedoch nicht für Aufrufer
der Klasse sichtbar, die in anderen Paketen definiert wurden.
<!-- Section -->
<a name="sectlevel4id008002002003"></a>
<h4>public </h4>
<p>
Membervariablen und Methoden vom Typ <a name="ixa100527"><a href="index_p.html#ixb100084"><font color=#000080><tt>public</tt></font></a></a>
sind im Rahmen ihrer Lebensdauer überall sichtbar. Sie können
daher in der eigenen Klasse und von beliebigen Methoden anderer Klassen
verwendet werden. Das Attribut <a href="index_p.html#ixb100084"><font color=#000080><tt>public</tt></font></a>
ist zusätzlich auch bei der Klassendefinition selbst von Bedeutung,
denn nur Klassen, die als <a href="index_p.html#ixb100084"><font color=#000080><tt>public</tt></font></a>
deklariert wurden, sind außerhalb des Pakets sichtbar, in dem
sie definiert wurden. In jeder Quelldatei darf nur eine Klasse mit
dem Attribut <a href="index_p.html#ixb100084"><font color=#000080><tt>public</tt></font></a>
angelegt werden.
<!-- Section -->
<a name="sectlevel4id008002002004"></a>
<h4>Standard (<a name="ixa100528">package scoped</a>) </h4>
<p>
Klassen, Methoden, Variablen mit Standard-Sichtbarkeit sind nur innerhalb
des Pakets sichtbar, in dem sie definiert wurden. Sie sind beispielsweise
nützlich, um in aufwändigeren Paketen allgemein zugängliche
Hilfsklassen zu realisieren, die außerhalb des Pakets unsichtbar
bleiben sollen. Sie können mitunter nützlich sein, um zu
verhindern, dass Elemente als <a href="index_p.html#ixb100084"><font color=#000080><tt>public</tt></font></a>
deklariert werden.
<!-- Section -->
<a name="sectlevel4id008002002005"></a>
<h4>static </h4>
<p>
Variablen und Methoden mit dem Attribut <a name="ixa100529"><a href="index_s.html#ixb100422"><font color=#000080><tt>static</tt></font></a></a>
sind nicht an die Existenz eines konkreten Objekts gebunden, sondern
existieren vom Laden der Klasse bis zum Beenden des Programms. Das
<a href="index_s.html#ixb100422"><font color=#000080><tt>static</tt></font></a>-Attribut
beeinflusst bei Membervariablen ihre Lebensdauer und erlaubt bei Methoden
den Aufruf, ohne dass der Aufrufer ein Objekt der Klasse besitzt,
in der die Methode definiert wurde.
<p>
Wird das Attribut <a href="index_s.html#ixb100422"><font color=#000080><tt>static</tt></font></a>
nicht verwendet, so sind Variablen innerhalb einer Klasse immer an
eine konkrete Instanz gebunden. Ihre Lebensdauer beginnt mit dem Anlegen
des Objekts und dem Aufruf eines Konstruktors und endet mit der Freigabe
des Objekts durch den Garbage Collector.
<!-- Section -->
<a name="sectlevel4id008002002006"></a>
<h4>final </h4>
<p>
Membervariablen mit dem Attribut <a name="ixa100530"><a href="index_f.html#ixb100401"><font color=#000080><tt>final</tt></font></a></a>
dürfen nicht verändert werden, sind also als <i>Konstanten</i>
anzusehen. Methoden des Typs <a href="index_f.html#ixb100401"><font color=#000080><tt>final</tt></font></a>
dürfen nicht überlagert werden; ebensowenig dürfen
Klassen des Typs <a href="index_f.html#ixb100401"><font color=#000080><tt>final</tt></font></a>
zur Ableitung neuer Klassen verwendet werden. Wird das Attribut <a href="index_f.html#ixb100401"><font color=#000080><tt>final</tt></font></a>
dagegen nicht verwendet, sind Membervariablen veränderbar, können
Methoden überlagert und Klassen abgeleitet werden.
<p>
Falls eine Methode oder Klasse das Attribut <a href="index_f.html#ixb100401"><font color=#000080><tt>final</tt></font></a>
besitzt, kann der Compiler auf die dynamische Methodensuche verzichten.
<a href="index_f.html#ixb100401"><font color=#000080><tt>final</tt></font></a>-Methoden
können daher performanter aufgerufen werden als normale Methoden.
Dies ist einer der Gründe dafür, dass die Java-Designer
einige der mitgelieferten Klassen als <a href="index_f.html#ixb100401"><font color=#000080><tt>final</tt></font></a>
deklariert haben. Es führt aber gleichzeitig dazu, dass die entsprechenden
Klassen nicht mehr erweitert werden können. Ein prominentes Beispiel
aus der Laufzeitbibliothek ist die als <a href="index_f.html#ixb100401"><font color=#000080><tt>final</tt></font></a>
deklarierte Klasse <a href="index_s.html#ixb100117"><font color=#000080><tt>String</tt></font></a>.
<p>
Seit dem JDK 1.1 kann das <a href="index_f.html#ixb100401"><font color=#000080><tt>final</tt></font></a>-Attribut
auch auf Parameter von Methoden und lokale Variablen angewendet werden.
Dadurch stellt der Compiler sicher, dass die Variable bzw. der Parameter
nach der Initialisierung nicht mehr verändert wird. Die Initialisierung
muss dabei nicht unbedingt bei der Deklaration erfolgen, sondern kann
auch später vorgenommen werden. Wichtig ist, dass nur genau einmal
ein Wert zugewiesen wird.
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=1></td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>
<p>
Im Gegensatz zu C oder C++ gibt es allerdings bei als <a href="index_f.html#ixb100401"><font color=#000080><tt>final</tt></font></a>
deklarierten Objektparametern keine Möglichkeit, zwischen dem
Objekt insgesamt und seinen einzelnen Elementen zu unterscheiden.
Eine als <a href="index_f.html#ixb100401"><font color=#000080><tt>final</tt></font></a>
deklarierte Objektvariable wird zwar insgesamt vor Zuweisungen geschützt,
der Wert einzelner Membervariablen kann jedoch verändert werden.
Dies gilt analog für Arrays, die ja ebenfalls Objekte sind: <a href="index_f.html#ixb100401"><font color=#000080><tt>final</tt></font></a>
bietet keinen Schutz gegen die unerwünschte Zuweisung eines Werts
an ein einzelnes Element des Arrays.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#CC0000">
<tr>
<td><font color="#FFFFFF"> Warnung </font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
</tr>
</table>
<!-- Section -->
<a name="sectlevel4id008002002007"></a>
<h4>transient </h4>
<p>
Membervariablen können mit dem Attribut <a href="index_t.html#ixb100429"><font color=#000080><tt>transient</tt></font></a>
belegt werden, um anzuzeigen, dass sie keine persistente Form besitzen.
Sie werden beim Serialisieren und Deserialisieren von Objekten dieses
Typs ignoriert. Details werden in <a href="k100260.html#kapitelserialisierung">Kapitel 41</a>
beschrieben.
<!-- Section -->
<a name="sectlevel4id008002002008"></a>
<h4>volatile </h4>
<p>
Das Schlüsselwort <a name="ixa100531"><a href="index_v.html#ixb100430"><font color=#000080><tt>volatile</tt></font></a></a>
wird verwendet, um anzuzeigen, dass Membervariablen <i>asynchron</i>,
also außerhalb des aktuellen Threads, modifiziert werden können.
Der Wert einer so deklarierten Variable wird daher bei jedem Zugriff
erneut gelesen (anstatt möglicherweise direkt aus einem Register
der virtuellen Maschine genommen zu werden). Die Verwendung von <a href="index_v.html#ixb100430"><font color=#000080><tt>volatile</tt></font></a>
ist eher ungebräuchlich. Es kann beispielsweise zur Sicherstellung
der Datenintegrität beim Multithreading verwendet werden oder
dient dazu, Zugriffe auf asynchron veränderliche Speicherstellen
(etwa eine Echtzeituhr, auf die über eine Variable zugegriffen
wird) stets aktuell zu halten.
<hr>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
Wesley, Version 5.0.1
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100051.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100052.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100054.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100057.html"> >> </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
<td align="right">© 1998, 2007 Guido Krüger & Thomas
Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
</table>
<a name="endofbody"></a>
</body>
</html>
|