summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100048.html
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Master/Reference Architectures and Patterns/hjp5/html/k100048.html
downloadStudium-master.tar.gz
Studium-master.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100048.html')
-rw-r--r--Master/Reference Architectures and Patterns/hjp5/html/k100048.html244
1 files changed, 244 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100048.html b/Master/Reference Architectures and Patterns/hjp5/html/k100048.html
new file mode 100644
index 0000000..b6a4ac9
--- /dev/null
+++ b/Master/Reference Architectures and Patterns/hjp5/html/k100048.html
@@ -0,0 +1,244 @@
+<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,k100046.html;106,k100047.html;107,k100049.html;108,k100051.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">&nbsp;Titel&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100046.html">&nbsp;&lt;&lt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100047.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100049.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100051.html">&nbsp;&gt;&gt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
+<td align="right">Kapitel 7 - OOP I: Grundlagen
+</table>
+<hr>
+
+
+<!-- Section -->
+<a name="sectlevel2id007002"></a>
+<h2>7.2 Klassen und Objekte in Java </h2>
+<hr>
+<ul>
+<li><a href="k100048.html#sectlevel2id007002">7.2 Klassen und Objekte in Java</a>
+<ul>
+<li><a href="k100048.html#sectlevel3id007002001">7.2.1 Klassen</a>
+<li><a href="k100048.html#sectlevel3id007002002">7.2.2 Objekte</a>
+</ul>
+</ul>
+<hr>
+
+
+<!-- Section -->
+<a name="sectlevel3id007002001"></a>
+<h3>7.2.1 Klassen </h3>
+
+<p>
+Eine Klassendefinition in Java wird durch das Schl&uuml;sselwort <a name="ixa100462"><a href="index_c.html#ixb100394"><font color=#000080><tt>class</tt></font></a></a>
+eingeleitet. Anschlie&szlig;end folgt innerhalb von geschweiften Klammern
+eine beliebige Anzahl an Variablen- und Methodendefinitionen. Das
+folgende Listing ist ein Beispiel f&uuml;r eine einfache Klassendefinition:
+<a name="autoklasse"></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">/* Auto.java */</font>
+<font color="#555555">002 </font>
+<font color="#555555">003 </font><font color="#0000AA">public</font> <font color="#0000AA">class</font> Auto
+<font color="#555555">004 </font>{
+<font color="#555555">005 </font> <font color="#0000AA">public</font> String name;
+<font color="#555555">006 </font> <font color="#0000AA">public</font> <font color="#006699">int</font> erstzulassung;
+<font color="#555555">007 </font> <font color="#0000AA">public</font> <font color="#006699">int</font> leistung;
+<font color="#555555">008 </font>}</pre>
+</font>
+</td>
+<td valign=top align=right>
+<a href="../examples/Auto.java"><font color="#000055" size=-1>Auto.java</font></a></td>
+</tr>
+</table>
+<i>
+Listing 7.1: Eine einfache Klassendefinition</i></p>
+
+<p>
+Diese Klasse enth&auml;lt keine Methoden, sondern lediglich die Variablen
+<font color="#000077"><tt>name</tt></font>, <font color="#000077"><tt>erstzulassung</tt></font>
+und <font color="#000077"><tt>leistung</tt></font>. Eine solche methodenlose
+Klassendefinition entspricht dem Konzept des Verbunddatentyps aus
+C oder PASCAL (<font color="#000077"><tt>struct</tt></font> bzw. <font color="#000077"><tt>record</tt></font>).
+Die innerhalb einer Klasse definierten Variablen werden wir im folgenden
+(analog zu C++) meist als <a name="ixa100463"><i>Membervariablen</i></a>
+bezeichnen. Die in <a href="k100047.html#kapselung">Abschnitt 7.1.3</a>
+erw&auml;hnten Begriffe <i>Instanzvariablen</i> oder <i>Instanzmerkmal</i>
+sind aber ebenso g&uuml;ltig.
+
+<!-- Section -->
+
+<a name="sectlevel3id007002002"></a>
+<h3>7.2.2 Objekte </h3>
+
+<p>
+Um von einer Klasse ein Objekt anzulegen, muss eine Variable vom Typ
+der Klasse deklariert und ihr mit Hilfe des <a name="ixa100464"><a href="index_n.html#ixb100089"><font color=#000080><tt>new</tt></font></a></a>-Operators
+ein neu erzeugtes Objekt zugewiesen werden:
+<a name="listingid007002"></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>Auto meinKombi;
+<font color="#555555">002 </font>meinKombi = <font color="#0000AA">new</font> Auto();</pre>
+</font>
+</td>
+</tr>
+</table>
+<i>
+Listing 7.2: Erzeugen eines Objekts mit new</i></p>
+
+<p>
+Die erste Anweisung ist eine normale Variablendeklaration, wie sie
+aus <a href="k100022.html#kapiteldatentypen">Kapitel 4</a> bekannt
+ist. Anstelle eines primitiven Typs wird hier der Typname einer zuvor
+definierten Klasse verwendet. Im Unterschied zu primitiven Datentypen
+wird die Objektvariable <font color="#000077"><tt>meinKombi</tt></font>
+als <i>Referenz</i> gespeichert. Die zweite Anweisung generiert mit
+Hilfe des <a href="index_n.html#ixb100089"><font color=#000080><tt>new</tt></font></a>-Operators
+eine neue Instanz der Klasse <font color="#000077"><tt>Auto</tt></font>
+und weist sie der Variablen <font color="#000077"><tt>meinKombi</tt></font>
+zu.
+
+<p>
+In Java wird jede <i>selbstdefinierte</i> Klasse mit Hilfe des <a href="index_n.html#ixb100089"><font color=#000080><tt>new</tt></font></a>-Operators
+instanziert. Mit Ausnahme von Strings und Arrays, bei denen der Compiler
+auch <i>Literale</i> zur Objekterzeugung zur Verf&uuml;gung stellt,
+gilt dies auch f&uuml;r alle vordefinierten Klassen der Java-Klassenbibliothek.
+<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>
+Wie bei primitiven Variablen lassen sich beide Anweisungen auch kombinieren.
+Das nachfolgende Beispiel deklariert und initialisiert die Variable
+<font color="#000077"><tt>meinKombi</tt></font>:</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">&nbsp;Tipp&nbsp;</font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#0099CC"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+<a name="listingid007003"></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>Auto meinKombi = <font color="#0000AA">new</font> Auto();</pre>
+</font>
+</td>
+</tr>
+</table>
+<i>
+Listing 7.3: Kombinierte Deklaration und Initialisierung einer Objektvariablen</i></p>
+
+<p>
+Nach der Initialisierung haben alle Variablen des Objekts zun&auml;chst
+Standardwerte. Referenztypen haben den Standardwert <a name="ixa100465"><a href="index_n.html#ixb100235"><font color=#000080><tt>null</tt></font></a></a>,
+die Standardwerte der primitiven Typen k&ouml;nnen <a href="k100024.html#primitivedatentypen">Tabelle 4.1</a>
+entnommen werden. Der Zugriff auf sie erfolgt mit Hilfe der Punktnotation
+<font color="#000077"><tt>Objekt.Variable</tt></font>. Um unser <font color="#000077"><tt>Auto</tt></font>-Objekt
+in einen 250 PS starken Mercedes 600 des Baujahrs 1972 zu verwandeln,
+m&uuml;ssten folgende Anweisungen ausgef&uuml;hrt werden:
+<a name="listingid007004"></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>meinKombi.name = <font color="#0000FF">"Mercedes 600"</font>;
+<font color="#555555">002 </font>meinKombi.erstzulassung = 1972;
+<font color="#555555">003 </font>meinKombi.leistung = 250;</pre>
+</font>
+</td>
+</tr>
+</table>
+<i>
+Listing 7.4: Zuweisen von Werten an die Variablen eines Objekts</i></p>
+
+<p>
+Ebenso wie der schreibende erfolgt auch der lesende Zugriff mit Hilfe
+der Punktnotation. Die Ausgabe des aktuellen Objektes auf dem Bildschirm
+k&ouml;nnte also mit den folgenden Anweisungen erledigt werden:
+<a name="listingid007005"></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>System.out.println(<font color="#0000FF">"Name........: "</font>+meinKombi.name);
+<font color="#555555">002 </font>System.out.println(<font color="#0000FF">"Zugelassen..: "</font>+meinKombi.erstzulassung);
+<font color="#555555">003 </font>System.out.println(<font color="#0000FF">"Leistung....: "</font>+meinKombi.leistung);</pre>
+</font>
+</td>
+</tr>
+</table>
+<i>
+Listing 7.5: Lesender Zugriff auf die Variablen eines Objekts</i></p>
+<hr>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</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="k100046.html">&nbsp;&lt;&lt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100047.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100049.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100051.html">&nbsp;&gt;&gt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
+<td align="right">&copy; 1998, 2007 Guido Kr&uuml;ger &amp; Thomas
+Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
+</table>
+<a name="endofbody"></a>
+</body>
+</html>