<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://cgd.zum.de/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://cgd.zum.de/index.php?action=history&amp;feed=atom&amp;title=Vererbung</id>
		<title>Vererbung - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="https://cgd.zum.de/index.php?action=history&amp;feed=atom&amp;title=Vererbung"/>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Vererbung&amp;action=history"/>
		<updated>2026-05-24T16:32:35Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in ComeniusWiki</subtitle>
		<generator>MediaWiki 1.21.2</generator>

	<entry>
		<id>https://cgd.zum.de/index.php?title=Vererbung&amp;diff=4962&amp;oldid=prev</id>
		<title>B.Schiller am 13. Juli 2016 um 06:45 Uhr</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Vererbung&amp;diff=4962&amp;oldid=prev"/>
				<updated>2016-07-13T06:45:05Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 13. Juli 2016, 06:45 Uhr&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 398:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 398:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Aufgabe 4'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Aufgabe 4'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Es sollen drei Klassen erstellt werden: '''Viereck''', '''Rechteck''' als Unterklasse von ''Viereck'' und '''Quadrat''' als Unterklasse von ''Rechteck''. Jede der Klassen erhält eine Methode ''umfang()'', die die effizienteste Methode der Berechnung des Umfangs für die einzelne Figur nutzt. Achte insbesondere darauf, welche Konstruktoren in der jeweiligen Oberklasse implementiert werden müssen (Die Fehlermeldung in BlueJ ist dabei hilfreich). Teste in einer vierten Klasse die Umsetzung mit folgendem Code (Ausgabe in der Form ''&amp;quot;Ich bin ein Rechteck. Umfang: 45&amp;quot;''):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Es sollen drei Klassen erstellt werden: '''Viereck''', '''Rechteck''' als Unterklasse von ''Viereck'' und '''Quadrat''' als Unterklasse von ''Rechteck''. Jede der Klassen erhält eine Methode ''umfang()'', die die effizienteste Methode der Berechnung des Umfangs für die einzelne Figur nutzt&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. Die Klasse Quadrat erhält zudem eine Methode ''flaeche()'' zur Berechnung des Flächeninhalts&lt;/ins&gt;. Achte insbesondere darauf, welche Konstruktoren in der jeweiligen Oberklasse implementiert werden müssen (Die Fehlermeldung in BlueJ ist dabei hilfreich). Teste in einer vierten Klasse die Umsetzung mit folgendem Code (Ausgabe in der Form ''&amp;quot;Ich bin ein Rechteck. Umfang: 45&amp;quot;''):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>B.Schiller</name></author>	</entry>

	<entry>
		<id>https://cgd.zum.de/index.php?title=Vererbung&amp;diff=4951&amp;oldid=prev</id>
		<title>B.Schiller am 11. Juli 2016 um 07:06 Uhr</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Vererbung&amp;diff=4951&amp;oldid=prev"/>
				<updated>2016-07-11T07:06:35Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 11. Juli 2016, 07:06 Uhr&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 496:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 496:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; public void umfang(){&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; public void umfang(){&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; int u=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;2&lt;/del&gt;*a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;+ 2*b&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; int u=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;4&lt;/ins&gt;*a;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; System.out.println(&amp;quot;Ich bin ein Quadrat. Umfang = &amp;quot;+u);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; System.out.println(&amp;quot;Ich bin ein Quadrat. Umfang = &amp;quot;+u);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>B.Schiller</name></author>	</entry>

	<entry>
		<id>https://cgd.zum.de/index.php?title=Vererbung&amp;diff=4924&amp;oldid=prev</id>
		<title>B.Schiller am 4. Juli 2016 um 07:06 Uhr</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Vererbung&amp;diff=4924&amp;oldid=prev"/>
				<updated>2016-07-04T07:06:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 4. Juli 2016, 07:06 Uhr&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 72:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 72:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//Attribute&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//Attribute&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;private String name;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;private String name;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;private String geburtsdatum&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;private String geburtsdatum&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//Konstruktor&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//Konstruktor&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>B.Schiller</name></author>	</entry>

	<entry>
		<id>https://cgd.zum.de/index.php?title=Vererbung&amp;diff=4923&amp;oldid=prev</id>
		<title>B.Schiller am 4. Juli 2016 um 07:03 Uhr</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Vererbung&amp;diff=4923&amp;oldid=prev"/>
				<updated>2016-07-04T07:03:07Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 4. Juli 2016, 07:03 Uhr&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 144:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 144:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;public void pruefen (Schueler s){ ... }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;public void pruefen (Schueler s){ ... }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;public void verweisErteilen &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;/&lt;/del&gt;Schueler s) { ... }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;public void verweisErteilen &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(&lt;/ins&gt;Schueler s) { ... }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;...&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 157:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 157:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//Konstruktor&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//Konstruktor&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;public Schueler&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;(&lt;/del&gt;(String name, String geburtsdatum, String telefonnummer, String schueler-ID){&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;public Schueler(String name, String geburtsdatum, String telefonnummer, String schueler-ID){&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//Aufruf des Konstruktors der Oberklasse&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//Aufruf des Konstruktors der Oberklasse&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;super(name, geburtsdatum, telefonnummer);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;super(name, geburtsdatum, telefonnummer);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>B.Schiller</name></author>	</entry>

	<entry>
		<id>https://cgd.zum.de/index.php?title=Vererbung&amp;diff=4841&amp;oldid=prev</id>
		<title>B.Schiller: Die Seite wurde neu angelegt: „Die Vererbung ist eines der grundlegenden Konzepte der Objektorientierung. Sie dient dazu, aufbauend auf bereits existierenden Klassen neue zu schaffen, wobei …“</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Vererbung&amp;diff=4841&amp;oldid=prev"/>
				<updated>2016-05-24T08:39:20Z</updated>
		
		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Die Vererbung ist eines der grundlegenden Konzepte der Objektorientierung. Sie dient dazu, aufbauend auf bereits existierenden Klassen neue zu schaffen, wobei …“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Die Vererbung ist eines der grundlegenden Konzepte der Objektorientierung. Sie dient dazu, aufbauend auf bereits existierenden Klassen neue zu schaffen, wobei die Beziehung zwischen ursprünglicher und neuer Klasse - anders als bei einer Assoziation -  dauerhaft ist. Eine neue Klasse kann dabei eine Erweiterung oder eine Einschränkung der ursprünglichen Klasse sein.&amp;lt;br/&amp;gt; Die vererbende Klasse wird meist '''Oberklasse''' (oder auch Superklasse) genannt, die erbende '''Unterklasse'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Problemstellung'''&lt;br /&gt;
&lt;br /&gt;
Ein Autohändler, der sowohl mit Neu- als auch mit Gebrauchtwagen handelt, will die Fahrzeuge in einer Datenbank erfassen, wobei er die beiden Typen möglichst effizient und unabhängig voneinander abspeichern möchte. Eine Modellierung könnte zuerst einmal folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
[[Datei:vererbung1.JPG]]&lt;br /&gt;
&lt;br /&gt;
Was hier sehr schnell auffallen dürfte, ist die Tatsache, dass die Darstellungen weitgehend übereinstimmen und der Gebrauchtwagen nur weitere Attribute enthält, die beim Neuwagen von geringem Interesse sind. Das Konzept der Vererbung ermöglicht es nun, die Klasse ''Gebrauchtwagen'' als Unterklasse der Klasse ''Auto'' zu modellieren. Dies bedeutet, dass ein Objekt alle Attribute und Methoden der Oberklasse erbt und noch weitere Attribute und Methoden erhält. In der Unified Modeling Language (UML) wird eine Vererbungsbeziehung durch einen Pfeil mit einer dreieckigen Spitze dargestellt, der von der Unterklasse zur Oberklasse zeigt. Geerbte Attribute und Methoden werden in der Darstellung der Unterklasse nicht wiederholt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:vererbung2.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Spezialisierung und Generalisierung'''&lt;br /&gt;
&lt;br /&gt;
Spezialisierung und Generalisierung sind zwei Sichtweisen des Vererbungskonzepts. Bilden wir eine neue Klasse, deren Instanzen eine Teilmenge der Instanzen der Oberklasse darstellen, sprechen wir bei der Bildung der Unterklasse von einer '''Spezialisierung''' (Konkretisierung). Fassen wir dagegen Attribute und Methoden mehrerer ähnlicher Klassen zu einer neuen Klasse zusammen, sprechen wir von einer '''Generalisierung''' (Abstraktion).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:100px; margin-top:30px; margin-bottom:30px&amp;quot;&amp;gt;&lt;br /&gt;
[[Datei:vererbung3.JPG]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Klassenhierarchien'''&lt;br /&gt;
&lt;br /&gt;
In einer Klassenhierarchie werden statische Beziehungen zwischen den Klassen dargestellt. Die Darstellung ähnelt einem Stammbaum, wie wir ihn in der 6.Klasse kennengelernt haben. Die höher liegenden Klassen vererben bei Bedarf an die darunterliegenden Klassen welche wieder an Klassen unter ihnen vererben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;'''Beispiel:'''&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Schulfamilie hat verschiedene Mitglieder. Es gibt Schüler, Lehrer und Eltern, die alle nicht nur Mitglieder der Schulfamilie (MdS) sind, sondern sie alle sind Personen. Alle Mitglieder der Schulfamilie erben von der Klasse ''Person'' die Attribute ''name'' und ''geburtsdatum''. Lehrer und Schüler haben dagegen weitere recht unterschiedliche Attribute. Mitglieder der Schulleitung sind zwar auch Lehrer, haben aber noch weitere Attribute, was eine Spezialisierung der Klasse Lehrer nahelegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:100px; margin-top:30px; margin-bottom:30px&amp;quot;&amp;gt;&lt;br /&gt;
[[Datei:vererbung4.JPG]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#BEE599; padding:10px; margin-bottom:30px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Aufgabe 1'''&lt;br /&gt;
&lt;br /&gt;
Folgende Begriffe sollen in Form eines Klassendiagramms in eine Klassenhierarchie umgesetzt werden: &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Rechteck - Kreis - Polygon - Figur - Viereck - Raute - Parallelogramm - Ellipse - Quadrat - Dreieck &amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;Wähle zu diesem Zweck geeignete Attribute für die einzelnen Klassen. Beachte dabei, welche Attribute von der bzw. den Oberklasse(n) geerbt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Aufgabe 2'''&lt;br /&gt;
&lt;br /&gt;
Das Generalisierungsbeispiel (Kraftfahrzeuge) soll erweitert werden, so dass möglichst viele Fortbewegungsmittel in der Klassenhierarchie erfasst werden. Ergänze die Klassendiagramme durch geeignete Attribute und berücksichtige dabei die Vererbungshierarchie.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Umsetzung in Java'''&lt;br /&gt;
&lt;br /&gt;
In Java können Klassenhierarchien nur durch Spezialisierung gebildet werden: Unterklasse erweitert (''extends'') Oberklasse. Dies spiegelt sich in der Syntax wieder - die Klassendefinition der Unterklasse weist auf ihren Status als Erweiterung der Oberklasse hin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class &amp;lt;Name der Unterklasse&amp;gt; extends &amp;lt;Name der Oberklasse&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Hinweise:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vererbung bedeutet, dass die Unterklasse alle Attribute und Methoden von der Oberklasse übernimmt.&lt;br /&gt;
* Es werden keine Konstruktoren vererbt!&lt;br /&gt;
* Unter- und Oberklasse bieten Konstruktoren an.&lt;br /&gt;
* Die Unterklasse kümmert sich in ihrem Konstruktor nur um die Attribute, die in der Unterklasse deﬁniert sind.&lt;br /&gt;
* Damit auch die Datenfelder der Oberklasse korrekt initialisiert werden,rufen wir den Konstruktor der Oberklasse auf.&lt;br /&gt;
* Der Aufruf des Konstruktors der Oberklasse erfolgt mit dem Schlüsselwort '''super'''.&lt;br /&gt;
* Dieser Aufruf muss stets die erste Anweisung in einem Konstruktor der Unterklasse sein! Ansonsten fügt der Compiler den Aufruf eines parameterlosen Konstruktors für die Oberklasse ein.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel soll nun die (teilweise) Implementierung der Klassenhierarchie aus dem Schulfamilie-Beispiel dienen:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public class Person {&lt;br /&gt;
//Attribute&lt;br /&gt;
private String name;&lt;br /&gt;
private String geburtsdatum&lt;br /&gt;
&lt;br /&gt;
//Konstruktor&lt;br /&gt;
public person(String name, String geburtsdatum){&lt;br /&gt;
this.name=name;&lt;br /&gt;
this.geburtsdatum = geburtsdatum;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Getter- und Setter-Methoden&lt;br /&gt;
public String getName(){&lt;br /&gt;
return name;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public String getGeburtsdatum(){&lt;br /&gt;
return geburtsdatum;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void setName(String n){&lt;br /&gt;
name=n;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void setGeburtsdatum(String g){&lt;br /&gt;
geburtsdatum = g;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MdS extends Person{&lt;br /&gt;
//weitere Attribute für Mitglieder der Schulfamilie&lt;br /&gt;
public String telefonnummer;&lt;br /&gt;
&lt;br /&gt;
//Konstruktor&lt;br /&gt;
public MdS(String name, String geburtsdatum, String telefonnummer){&lt;br /&gt;
//Aufruf des Konstruktors der Oberklasse&lt;br /&gt;
super(name, geburtsdatum);&lt;br /&gt;
//Initialisierung der weiteren Variablen&lt;br /&gt;
this.telefonnummer=telefonnummer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//weitere Getter- und Setter-Methoden&lt;br /&gt;
public String getTelefonnummer(){&lt;br /&gt;
return telefonnummer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void setTelefonnummer(String t){&lt;br /&gt;
telefonnummer=t;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Lehrer extends MdS{&lt;br /&gt;
//weitere Attribute&lt;br /&gt;
private String pkz;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
//Konstruktor&lt;br /&gt;
public Lehrer(String name, String geburtsdatum, String telefonnummer, String pkz){&lt;br /&gt;
//Aufruf des Konstruktors der Oberklasse&lt;br /&gt;
super(name, geburtsdatum, telefonnummer);&lt;br /&gt;
//Initialisierung der weiteren Variablen&lt;br /&gt;
this.pkz = pkz;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Getter-, Setter- und andere Methoden&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
public void pruefen (Schueler s){ ... }&lt;br /&gt;
&lt;br /&gt;
public void verweisErteilen /Schueler s) { ... }&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Schueler extends MdS {&lt;br /&gt;
//weitere Attribute&lt;br /&gt;
private String schueler-ID;&lt;br /&gt;
&lt;br /&gt;
//Konstruktor&lt;br /&gt;
public Schueler((String name, String geburtsdatum, String telefonnummer, String schueler-ID){&lt;br /&gt;
//Aufruf des Konstruktors der Oberklasse&lt;br /&gt;
super(name, geburtsdatum, telefonnummer);&lt;br /&gt;
//Initialisierung der weiteren Variablen&lt;br /&gt;
this.schueler-ID = schueler-ID;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Getter-, Setter- und andere Methoden&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
public void hausaufgabeMachen(){ ... }&lt;br /&gt;
&lt;br /&gt;
public void rechenschaftsablage(){ ... }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Zur Vertiefung: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:100px; margin-top:30px; margin-bottom:30px&amp;quot;&amp;gt;&lt;br /&gt;
{{#ev:youtube|Zf-aL6gCPxQ}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#BEE599; padding:10px; margin-bottom:30px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Aufgabe 3'''&lt;br /&gt;
&lt;br /&gt;
Für eine Mitarbeiterverwaltung soll eine Klasse ''Mitarbeiter'' mit den Attributen ''Name'', ''Vorname'' und ''Gehalt'' und entsprechenden Getter-Methoden und eine Setter-Methode für das Gehalt erstellt werden. Zusätzlich werden zwei Unterklassen ''Filialleiter'' und ''Auszubildender'' angelegt. Der Filialleiter hat als zusätzliches Attribut die ''bueronummer'' und die Auszubildenden ''ausbildungsrichtung'' und ''ausbildungsbeginn''. Auch hier sind wieder geeignete Getter-Methoden bereitzustellen. Die Klasse Filialleiter erhält nun zwei zusätzliche Methoden: Die Methode ''gehaltAendern(int gehaltNeu)'' ändert das Gehalt eines Mitarbeiters und gibt anschließend folgenden (Beispiel-)Text auf der Konsole aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Das Gehalt von Max Mustermann beträgt nun 3100 Euro.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die zweite Methode ''azubiInfo(Auszubildender a)'' soll folgenden Text auf der Konsole ausgeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Der/Die Auszubildende Erna Musterfrau ist seit 01.04.2014 in der Ausbildungsrichtung Raketenpflege in unserem Betrieb beschäftigt.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeuge nun jeweils eine Instanz von Mitarbeiter, Filialleiter und Auszubildender und teste die beiden obigen Methoden in der Klasse Filialleiter. Verändere dabei zuerst das Gehalt des Mitarbeiters und dann das des Auszubildenden. Was fällt auf? Achte auch darauf, wo beim Auszubildenden die jeweils genutzten Getter-Methoden implementiert sind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;popup name=&amp;quot;Lösungsvorschlag&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public class Mitarbeiter{&lt;br /&gt;
    //Attribute&lt;br /&gt;
    private String name;&lt;br /&gt;
    private String vorname;&lt;br /&gt;
    private int gehalt;&lt;br /&gt;
    &lt;br /&gt;
    //Konstruktoren&lt;br /&gt;
    public Mitarbeiter(String name, String vorname, int gehalt){&lt;br /&gt;
        this.name=name;&lt;br /&gt;
        this.vorname=vorname;&lt;br /&gt;
        this.gehalt=gehalt;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public Mitarbeiter(String name, String vorname){&lt;br /&gt;
      this.name=name;&lt;br /&gt;
      this.vorname=vorname; &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //Getter- und Setter-Methoden&lt;br /&gt;
    public String getName(){&lt;br /&gt;
        return name;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public String getVorname(){&lt;br /&gt;
        return vorname;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public int getGehalt(){&lt;br /&gt;
        return gehalt;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void setGehalt(int gehaltNeu){&lt;br /&gt;
        gehalt=gehaltNeu;&lt;br /&gt;
    }   &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Auszubildender extends Mitarbeiter{&lt;br /&gt;
    //weitere Attribute&lt;br /&gt;
    private String ausbildungsrichtung;&lt;br /&gt;
    private String ausbildungsbeginn;&lt;br /&gt;
    &lt;br /&gt;
    //Konstruktor&lt;br /&gt;
    public Auszubildender(String name, String vorname, int gehalt, String ausbildungsrichtung, String ausbildungsbeginn){&lt;br /&gt;
        super(name, vorname, gehalt);&lt;br /&gt;
        this.ausbildungsrichtung=ausbildungsrichtung;&lt;br /&gt;
        this.ausbildungsbeginn=ausbildungsbeginn;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //Getter-Methoden&lt;br /&gt;
    public String getAusbildungsrichtung(){&lt;br /&gt;
        return ausbildungsrichtung;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public String getAusbildungsbeginn(){&lt;br /&gt;
        return ausbildungsbeginn;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Filialleiter extends Mitarbeiter{&lt;br /&gt;
    //zusätzliche Attribute&lt;br /&gt;
    private String bueronr;&lt;br /&gt;
    &lt;br /&gt;
    //Konstruktor&lt;br /&gt;
    public Filialleiter(String name, String vorname, int gehalt, String bueronr){&lt;br /&gt;
     super(name, vorname, gehalt);&lt;br /&gt;
     this.bueronr=bueronr;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //Getter- und Setter-Methoden&lt;br /&gt;
    public String getBueronr(){&lt;br /&gt;
        return bueronr;}&lt;br /&gt;
        &lt;br /&gt;
    public void setBueronr(String bueronrNeu){&lt;br /&gt;
        bueronr=bueronrNeu;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //weitere Methoden&lt;br /&gt;
    public void gehaltAendern(Mitarbeiter m, int gehaltNeu){&lt;br /&gt;
        m.setGehalt(gehaltNeu);&lt;br /&gt;
        System.out.println(&amp;quot;Das Gehalt von &amp;quot;+m.getVorname()+&amp;quot; &amp;quot;+m.getName()+&amp;quot; beträgt nun &amp;quot;+m.getGehalt()+&amp;quot; Euro.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
     public void azubiInfo(Auszubildender a){&lt;br /&gt;
       System.out.println(&amp;quot;Der/Die Auszubildende &amp;quot;+a.getVorname()+&amp;quot; &amp;quot;+a.getName()+&amp;quot; arbeitet seit &amp;quot;+a.getAusbildungsbeginn()+&amp;quot; in der Ausbildungsrichtung &amp;quot;+a.getAusbildungsrichtung()+&amp;quot; im Betrieb.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/popup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Polymorphie'''&lt;br /&gt;
&lt;br /&gt;
In der Lösung von Aufgabe 3 sind wir auf das Phänomen gestoßen, dass der ''Filialleiter'' das Gehalt eines ''Auszubildenden'' erhöhen konnte, obwohl die entsprechende Methode einen Parameterwert vom Typ ''Mitarbeiter'' verlangt hat. Dies ist dem Konzept der Polymorphie (griech. Vielgestaltigkeit) geschuldet. Dies bedeutet vereinfacht: '''Alles, was den deklarierten Typ der Referenzvariable ''erweitert'', kann der Referenzvariable ''zugewiesen'' werden.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Kfz {&lt;br /&gt;
&lt;br /&gt;
public KfZ() { ... }&lt;br /&gt;
&lt;br /&gt;
public void info(){&lt;br /&gt;
System.out.println(&amp;quot;Ich bin ein Kraftfahrzeug.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Lkw extends Kfz {&lt;br /&gt;
&lt;br /&gt;
public Lkw() { ... }&lt;br /&gt;
&lt;br /&gt;
public void info(){&lt;br /&gt;
System.out.println(&amp;quot;Ich bin ein Lastkraftwagen.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Pkw extends Kfz {&lt;br /&gt;
&lt;br /&gt;
public Pkw() { ... }&lt;br /&gt;
&lt;br /&gt;
public void info(){&lt;br /&gt;
System.out.println(&amp;quot;Ich bin ein Personenkraftwagen.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Test(){&lt;br /&gt;
&lt;br /&gt;
public Test() { &lt;br /&gt;
Kfz k = new Kfz();&lt;br /&gt;
Kfz l = new Lkw();&lt;br /&gt;
Kfz p = new Pkw();&lt;br /&gt;
&lt;br /&gt;
Lkw l2 = new Lkw();&lt;br /&gt;
Pkw p2 = new Pkw();&lt;br /&gt;
&lt;br /&gt;
k.info();&lt;br /&gt;
l.info();&lt;br /&gt;
p.info();&lt;br /&gt;
&lt;br /&gt;
l2.info();&lt;br /&gt;
p2.info()&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe sieht nun folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ich bin ein Kraftfahrzeug.&lt;br /&gt;
Ich bin ein Lastkraftwagen.&lt;br /&gt;
Ich bin ein Personenkraftwagen.&lt;br /&gt;
Ich bin ein Lastkraftwagen.&lt;br /&gt;
Ich bin ein Personenkraftwagen.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch wenn im zweiten und dritten Fall der Variable vom Typ ''Kfz'' eine Instanz einer Unterklasse zugeordnet wird, greift das Programm auf die entsprechende Methode ''info()'' der Unterklassen zu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Zur Vertiefung: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:100px; margin-top:30px; margin-bottom:30px&amp;quot;&amp;gt;&lt;br /&gt;
{{#ev:youtube|w4U-MkcLunU}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Überschreiben von Methoden'''&lt;br /&gt;
&lt;br /&gt;
Eine Unterklasse kann durch Vererbung die sichtbaren Eigenschaften ihrer Oberklasse erben. Sie kann nun wiederum Methoden hinzufügen. Besitzt eine Unterklasse eine Methode mit dem gleichen Methodennamen und der exakten Parameterliste (also der gleichen ''Signatur'') wie schon die Oberklasse, so überschreibt die Unterklasse die Methode der Oberklasse. Implementiert die Unterklasse die Methode neu, so sagt sie auf diese Weise: ''&amp;quot;Ich will es aber anders machen!.&amp;quot;'' (siehe Methode ''info()'' im obigen Beispiel) Die überschreibende Methode der Unterklasse kann demnach den Programmcode spezialisieren und Eigenschaften nutzen, die in der Oberklasse nicht bekannt sind. Die überschriebene Methode der Oberklasse ist dann erst einmal aus dem Rennen, und ein Methodenaufruf auf einem Objekt der Unterklasse würde die überschreibende Methode aufrufen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Zur Vertiefung: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:100px; margin-top:30px; margin-bottom:30px&amp;quot;&amp;gt;&lt;br /&gt;
{{#ev:youtube|n-3rn0xXBgY}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#BEE599; padding:10px; margin-bottom:30px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Aufgabe 4'''&lt;br /&gt;
&lt;br /&gt;
Es sollen drei Klassen erstellt werden: '''Viereck''', '''Rechteck''' als Unterklasse von ''Viereck'' und '''Quadrat''' als Unterklasse von ''Rechteck''. Jede der Klassen erhält eine Methode ''umfang()'', die die effizienteste Methode der Berechnung des Umfangs für die einzelne Figur nutzt. Achte insbesondere darauf, welche Konstruktoren in der jeweiligen Oberklasse implementiert werden müssen (Die Fehlermeldung in BlueJ ist dabei hilfreich). Teste in einer vierten Klasse die Umsetzung mit folgendem Code (Ausgabe in der Form ''&amp;quot;Ich bin ein Rechteck. Umfang: 45&amp;quot;''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 public class Test{&lt;br /&gt;
    &lt;br /&gt;
    public Test(){&lt;br /&gt;
        Viereck v = new Viereck(2,3,4,5);&lt;br /&gt;
        Viereck r = new Rechteck(2,3);&lt;br /&gt;
        Viereck q = new Quadrat (3);&lt;br /&gt;
        &lt;br /&gt;
        Rechteck r2 = new Rechteck(2,3);&lt;br /&gt;
        Quadrat q2 = new Quadrat(3);&lt;br /&gt;
        &lt;br /&gt;
        v.umfang();&lt;br /&gt;
        r.umfang();&lt;br /&gt;
        q.umfang();&lt;br /&gt;
        q.flaeche();&lt;br /&gt;
        r2.umfang();&lt;br /&gt;
        q2.umfang();&lt;br /&gt;
        q2.flaeche();&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warum führt der Aufruf ''q.flaeche()'' zu einer Fehlermeldung?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;popup name=&amp;quot;Lösungsvorschlag&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Viereck {&lt;br /&gt;
    //Attribute - public um direkten Zugriff durch die Unterklasse zu ermöglichen&lt;br /&gt;
    public int a;&lt;br /&gt;
    public int b;&lt;br /&gt;
    public int c;&lt;br /&gt;
    public int d;&lt;br /&gt;
    &lt;br /&gt;
    public Viereck(int a, int b, int c, int d){&lt;br /&gt;
        this.a=a;&lt;br /&gt;
        this.b=b;&lt;br /&gt;
        this.c=c;&lt;br /&gt;
        this.d=d;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public Viereck(int a, int b){&lt;br /&gt;
        this.a=a;&lt;br /&gt;
        this.b=b;&lt;br /&gt;
        c=a;&lt;br /&gt;
        d=b;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public Viereck(int a){&lt;br /&gt;
        this.a=a;&lt;br /&gt;
        b=a;&lt;br /&gt;
        c=a;&lt;br /&gt;
        d=a;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    public void umfang(){&lt;br /&gt;
        int u=a+b+c+d;&lt;br /&gt;
        System.out.println(&amp;quot;Ich bin ein Viereck. Umfang = &amp;quot;+u);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Rechteck extends Viereck {&lt;br /&gt;
    &lt;br /&gt;
    public Rechteck(int a, int b){&lt;br /&gt;
        super(a,b);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
     public Rechteck(int a){&lt;br /&gt;
        super(a);&lt;br /&gt;
    }&lt;br /&gt;
        &lt;br /&gt;
    &lt;br /&gt;
    public void umfang(){&lt;br /&gt;
        int u=2*a + 2*b;&lt;br /&gt;
        System.out.println(&amp;quot;Ich bin ein Rechteck. Umfang = &amp;quot;+u);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Quadrat extends Rechteck {&lt;br /&gt;
    &lt;br /&gt;
    public Quadrat(int a){&lt;br /&gt;
        super(a);&lt;br /&gt;
    }&lt;br /&gt;
        &lt;br /&gt;
    &lt;br /&gt;
    public void umfang(){&lt;br /&gt;
        int u=2*a + 2*b;&lt;br /&gt;
        System.out.println(&amp;quot;Ich bin ein Quadrat. Umfang = &amp;quot;+u);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void flaeche (){&lt;br /&gt;
        int f=a*a;&lt;br /&gt;
        System.out.println(&amp;quot;Ich bin ein Quadrat. Flaeche = &amp;quot;+f);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
q ist vom Datentyp ''Viereck''. Die Methode ''flaeche()'' ist aber im Gegensatz zur Methode ''umfang()'' in der Klasse ''Viereck'' nicht implementiert, weshalb das Programm auch nicht danach sucht, ob die Methode nicht vielleicht in der Unterklasse überschrieben wurde.&lt;br /&gt;
&amp;lt;/popup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Die Sichtbarkeit ''protected'''''&lt;br /&gt;
&lt;br /&gt;
Eine Unterklasse erbt alle sichtbaren Eigenschaften, d.h. alle Eigenschaften deren Zugriffsrecht ''public'' ist. Die Vererbung kann durch ''private'' eingeschränkt werden, dann sieht keine andere Klasse die Eigenschaften, weder fremde noch Unterklassen. Daneben kommt nun noch eine weitere Sichtbarkeit hinzu: '''''protected'''''.  '''''protected'''''-Eigenschaften werden an alle Unterklassen vererbt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Abstrakte Klassen'''&lt;br /&gt;
&lt;br /&gt;
In Java ist es möglich, abstrakte Methoden zu definieren. Klassen, die solche abstrakten Methoden enthalten, sind selbst abstrakt. Im Gegensatz zu konkreten Methoden enthalten abstrakte Methoden nur die Deklaration des Methodenkopfes, aber keine Implementierung des Methodenrumpfes. Syntaktisch unterscheiden sich abstrakte Methoden dadurch, dass anstelle der geschweiften Klammern mit den auszuführenden Anweisungen lediglich ein Semikolon steht. Zusätzlich wird die Definition mit dem Attribut '''''abstract''''' versehen. Abstrakte Methoden können nicht aufgerufen werden. Sie definieren nur eine Schnittstelle, die durch Überschreiben in einer abgeleiteten Klasse implementiert werden kann. Es ist sozusagen eine Aufforderung an jede abgeleitete Klasse, diese abstrakten Methoden zu implementieren und damit konkret zu machen. Tut sie dies nicht, wird sie selbst als abstrakt angesehen und muss ebenfalls mit dem Schlüsselwort '''''abstract''''' versehen werden. Von abstrakten Klassen können keine Instanzen gebildet werden, da sie Methoden enthalten, die nicht implementiert wurden. Statt dessen werden abstrakte Klassen abgeleitet, und in der abgeleiteten Klasse werden eine oder mehrere der abstrakten Methoden implementiert. Eine abstrakte Klasse wird konkret, wenn alle ihre Methoden implementiert sind. Die Konkretisierung kann dabei auch schrittweise über mehrere Vererbungsstufen erfolgen.&lt;br /&gt;
&lt;br /&gt;
Auch wenn von einer abstrakten Klasse keine Instanzen gebildet werden, kann sie dennoch Konstruktoren enthalten, auf die Unterklassen mittels des Schlüsselworts ''super'' zurückgreifen können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Beispiel:&amp;lt;/u&amp;gt; Wir wollen nun die Aufgabe 9.3.1 durch eine abstrakte Klasse ''Figur'' erweitern, die nur eine abstrakte Methode ''umfang'' enthält. (Die Probleme, die durch die nicht kompatiblen Konstruktoren entstehen, wollen wir hier vernachlässigen.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public abstract class Figur{&lt;br /&gt;
&lt;br /&gt;
//Attribut&lt;br /&gt;
private int linienbreite;&lt;br /&gt;
&lt;br /&gt;
//Konstruktor, der nur von den Unterklassen genutzt werden soll&lt;br /&gt;
protected Figur(int linienbreite){&lt;br /&gt;
this.linienbreite=linienbreite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//konkrete Methoden, die an die Unterklassen vererbt werden und nur dort sichtbar sein sollen&lt;br /&gt;
protected int getLinienbreite(){&lt;br /&gt;
return linienbreite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
protected void setLinienbreite(int linienbreiteNeu){&lt;br /&gt;
linienbreite=linienbreiteNeu;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//abstrakte Methode, die von allen Unterklassen zu implementieren ist&lt;br /&gt;
public abstract void umfang();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die abstrakte Klasse ''Figur'' verlangt nun von ihren Unterklassen, eine Methode umfang() zu implementieren. Geschieht dies nicht, erhält man folgende Fehlermeldung:&lt;br /&gt;
&lt;br /&gt;
'''Viereck is not abstract and does not override method umfang() in Figur'''&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass wir die Klasse Viereck ebenfalls ''abtract'' setzen müssen und die Methode dann in deren Unterklassen implementieren (oder auch diese ''abstract'' setzen) müssen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Zur Vertiefung: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:100px; margin-top:30px; margin-bottom:30px&amp;quot;&amp;gt;&lt;br /&gt;
{{#ev:youtube|F2dsyn68N9o}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>B.Schiller</name></author>	</entry>

	</feed>