<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.byte-welt.net/index.php?action=history&amp;feed=atom&amp;title=Polymorphie</id>
	<title>Polymorphie - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.byte-welt.net/index.php?action=history&amp;feed=atom&amp;title=Polymorphie"/>
	<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php?title=Polymorphie&amp;action=history"/>
	<updated>2026-08-11T00:18:30Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Byte-Welt Wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.byte-welt.net/index.php?title=Polymorphie&amp;diff=7672&amp;oldid=prev</id>
		<title>L-ectron-X am 8. März 2018 um 19:14 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php?title=Polymorphie&amp;diff=7672&amp;oldid=prev"/>
		<updated>2018-03-08T19:14:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 8. März 2018, 19:14 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l94&quot;&gt;Zeile 94:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 94:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Die Anwendung selbst muss bei neuen Plugins nicht geändert werden und kann diese einfach über das Interface mit dem Aufruf von setData und display starten.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Die Anwendung selbst muss bei neuen Plugins nicht geändert werden und kann diese einfach über das Interface mit dem Aufruf von setData und display starten.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;code&lt;/del&gt;=java&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight lang&lt;/ins&gt;=&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&lt;/ins&gt;java&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  interface VisualizationPlugin {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  interface VisualizationPlugin {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    public void setData( DisplayData data );&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    public void setData( DisplayData data );&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l111&quot;&gt;Zeile 111:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 111:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    public void display() { /* Show history data as Graph */ }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    public void display() { /* Show history data as Graph */ }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; 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 class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;code=java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Programmierung]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Programmierung]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Programmierung Grundlagen]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Programmierung Grundlagen]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Wikipedia|Seite=Polymorphie_(Programmierung)}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Wikipedia|Seite=Polymorphie_(Programmierung)}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>L-ectron-X</name></author>
	</entry>
	<entry>
		<id>https://wiki.byte-welt.net/index.php?title=Polymorphie&amp;diff=3222&amp;oldid=prev</id>
		<title>AndreUhres: /* Beispiel */</title>
		<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php?title=Polymorphie&amp;diff=3222&amp;oldid=prev"/>
		<updated>2008-07-26T23:51:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Beispiel&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 26. Juli 2008, 23:51 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l114&quot;&gt;Zeile 114:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 114:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Programmierung]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Programmierung]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategorie:Programmierung Grundlagen]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Wikipedia|Seite=Polymorphie_(Programmierung)}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Wikipedia|Seite=Polymorphie_(Programmierung)}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>AndreUhres</name></author>
	</entry>
	<entry>
		<id>https://wiki.byte-welt.net/index.php?title=Polymorphie&amp;diff=1684&amp;oldid=prev</id>
		<title>Swerflash: 1 Versionen</title>
		<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php?title=Polymorphie&amp;diff=1684&amp;oldid=prev"/>
		<updated>2007-06-13T18:44:27Z</updated>

		<summary type="html">&lt;p&gt;1 Versionen&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 13. Juni 2007, 18:44 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;de&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(kein Unterschied)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Swerflash</name></author>
	</entry>
	<entry>
		<id>https://wiki.byte-welt.net/index.php?title=Polymorphie&amp;diff=1683&amp;oldid=prev</id>
		<title>EagleEye am 27. Februar 2007 um 18:42 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php?title=Polymorphie&amp;diff=1683&amp;oldid=prev"/>
		<updated>2007-02-27T18:42:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Polymorphie&amp;#039;&amp;#039;&amp;#039; (griechisch, „Vielgestaltigkeit“) ist ein Konzept der [[Programmierung]], das es erlaubt, einem Wert oder einem Namen (z.&amp;amp;nbsp;B. einer [[Variable]]n) mehrere [[Datentyp]]en zuzuordnen.&lt;br /&gt;
&lt;br /&gt;
Den Gegensatz dazu bildet &amp;#039;&amp;#039;Monomorphie&amp;#039;&amp;#039;. Dort ist jeder Name und jeder Wert von genau einem Typ.&lt;br /&gt;
&lt;br /&gt;
==Einleitung==&lt;br /&gt;
&lt;br /&gt;
Polymorphie ist ein Konzept in [[Programmiersprache]]n. Um dieses Konzept zu verstehen, ist ein grundlegendes Verständnis von Programmierung und Datentypen notwendig. In dieser Einführung wird die Motivation dahinter verdeutlicht und gleich die verschiedenen Arten der Polymorphie vorweggenommen. Sie werden in den entsprechenden Abschnitten genauer erklärt. &lt;br /&gt;
&lt;br /&gt;
In älteren typisierten Programmiersprachen wird jedem Namen und jedem Wert im Quelltext eines Programms höchstens ein Typ zugeordnet. Die folgenden Beispiele stammen aus keiner konkreten Sprache, sind so aber denkbar:&lt;br /&gt;
&lt;br /&gt;
* Der Name einer Variablen hat genau den Typ, der ihr bei der Deklaration zugewiesen wurde. &lt;br /&gt;
* Der Wert einer Zeichenkette ist von einem Typ, der üblicherweise mit &amp;quot;String&amp;quot; bezeichnet wird.&lt;br /&gt;
* Das Literal 42 (oder der Wert, den es bezeichnet) hat einen Ganzzahltyp, oft mit &amp;quot;Integer&amp;quot; oder einer Kurzform davon bezeichnet.&lt;br /&gt;
* Der Operator + hat den Typ &amp;lt;math&amp;gt;Integer \times Integer \rightarrow Integer&amp;lt;/math&amp;gt;, akzeptiert also genau zwei Argumente vom Typ Integer und liefert genau einen Wert vom Typ Integer&lt;br /&gt;
* Die Funktion second, die zwei Strings akzeptiert und immer den zweiten zurückliefert ist vom Typ &amp;lt;math&amp;gt;String \times String \rightarrow String&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei diesen Beispielen fallen ein paar interessante Dinge ins Auge. Typischerweise kann der Operator + nicht nur dazu verwendet werden, ganze Zahlen zu addieren, sondern auch reelle oder auch eine ganze Zahl mit einer reellen. In manchen Sprachen wird er auch zur Verknüpfung von Strings verwendet: Man kann den Operator + &amp;quot;überladen&amp;quot;, d.h. für verschiedene Parametertypen definieren oder ganze Zahlen implizit, also versteckt in reelle umwandeln (Coercion). Der Operator + besitzt also (vielleicht implizit) verschiedene Typen. Bemerkung: der Typ eines Operators oder einer Funktion besteht aus den Typen der Parameter, deren Reihenfolge und dem Rückgabetyp.&lt;br /&gt;
&lt;br /&gt;
Die Funktion second könnte auch für andere Parametertypen geschrieben werden. Es spielt keine Rolle, von welchem Typ die Parameter sind (Achtung: der Rückgabetyp muss immer genau der des zweiten Parameters sein). Dazu werden die Parametertypen variabel gelassen, genauso wie die Argumente durch die Parameter variabel gelassen werden (parametrische Polymorphie). &amp;lt;!-- Bemerkung zum Unterschied von Argumenten und Parameter: ein Argument ist ein konkreter Wert, der einem Parameter zugewiesen wird. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viele arithmetische Operatoren sind auf Ganzzahlen, reellen oder auch komplexen Zahlen definiert. Den verschiedenen Zahlenarten ist also etwas gemeinsam, nämlich, dass man mit ihnen multiplizieren, addieren usw. kann. Einigen wohnt auch eine Ordnung inne, d.h. man kann bestimmen, welche von zwei Zahlen größer oder kleiner als die andere ist. Dabei variieren die Implementierungen der Operationen oft. Dazu führt man einen Typ mit dem Namen Number ein und sagt, dass alle Zahltypen nicht nur von ihrem speziellen Typ (z.B. Integer), sondern gleichzeitig auch vom Typ Number sein können (Inklusionspolymorphie).&lt;br /&gt;
&lt;br /&gt;
Kurze Ergänzung:&lt;br /&gt;
&amp;#039;&amp;#039;Nach Sprachbrockhaus ist Polymorphismus (Vielgestaltigkeit) die Ausbildung verschiedenartiger Formen in einer Organismenform&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Arten der Polymorphie ==&lt;br /&gt;
&lt;br /&gt;
In objektorientierten Programmiersprachen gibt es folgende Polymorphismen:&lt;br /&gt;
&lt;br /&gt;
#&amp;#039;&amp;#039;&amp;#039;Überladene Funktionen&amp;#039;&amp;#039;&amp;#039; sind polymorphe Funktionen.&lt;br /&gt;
#Ein Objekt einer Klasse verweist auf eine &amp;#039;&amp;#039;&amp;#039;polymorphe Struktur&amp;#039;&amp;#039;&amp;#039;, wenn es nicht nur auf Objekte einer Klasse sondern auf Objekte verschiedener Klassen, die von einer gemeinsamen Basisklasse abgeleitet wurden, zeigt.&lt;br /&gt;
#Eine &amp;#039;&amp;#039;&amp;#039;Methode&amp;#039;&amp;#039;&amp;#039; ist &amp;#039;&amp;#039;&amp;#039;polymorph&amp;#039;&amp;#039;&amp;#039;, wenn sie in verschiedenen Klassen die gleiche Spezifikation hat aber unterschiedlich implementiert ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Polymorphie wird unterteilt in folgende Arten:&lt;br /&gt;
&lt;br /&gt;
* universelle Polymorphie&lt;br /&gt;
** parametrische Polymorphie&lt;br /&gt;
** Inklusions-/Vererbungspolymorphie&lt;br /&gt;
* Ad-hoc-Polymorphie&lt;br /&gt;
** Coercion&lt;br /&gt;
&lt;br /&gt;
Manchmal wird Ad-hoc-Polymorphie gleichgesetzt mit [[Überladen]]. Das ist auf [[Christopher Strachey]] zurückzuführen&amp;lt;sup&amp;gt;[[Wikipedia:Quellenangaben|Quelle?]]&amp;lt;/sup&amp;gt;, der als erster Polymorphie unterteilte und zwar in parametrische und Ad-hoc-Polymorphie. Seine formlose Beschreibung lässt vermuten, dass er bei letzterem tatsächlich nur Überladen im Sinn hatte.&lt;br /&gt;
&lt;br /&gt;
Luca Cardelli und Peter Wegner schlugen die feinere Unterteilung wie oben aufgeführt vor und betrachten Coercion als eine Form von Polymorphie&amp;lt;sup&amp;gt;[[Wikipedia:Quellenangaben|Quelle?]]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Universelle und Ad-hoc-Polymorphie ===&lt;br /&gt;
&lt;br /&gt;
Universelle Polymorphie unterscheidet sich von Ad-hoc-Polymorphie in mehreren Aspekten. Bei Ad-hoc-Polymorphie kann ein Name oder ein Wert nur endlich viele verschiedene Typen besitzen. Diese sind zudem während der [[Kompilierung]] bekannt. Universelle Polymorphie dagegen erlaubt es, unendlich viele Typen zuzuordnen.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Unterschied liegt darin, dass die Implementierung einer universell polymorphen Funktion generell gleichen Code unabhängig von den Typen ihrer Argumente ausführt, während ad-hoc-polymorphe (also überladene) Funktionen abhängig von den Typen ihrer Argumente unterschiedlich implementiert sein können.&lt;br /&gt;
&lt;br /&gt;
=== Überladen und Coercion ===&lt;br /&gt;
&lt;br /&gt;
Variablen sind überladen, wenn unterschiedliche Funktionen mit dem selben Namen verbunden sind. Beispielsweise ist der Operator + in vielen Programmiersprachen von vornherein überladen. So können mit ihm ganze Zahlen und Fließkommzahlen addiert werden. Oft wird er auch zur Stringkonkatenierung verwendet:&lt;br /&gt;
&lt;br /&gt;
 42 + 3              (1)&lt;br /&gt;
 3.14 + 1.0          (2)&lt;br /&gt;
 &amp;quot;Hallo&amp;quot; + &amp;quot; Welt!&amp;quot;  (3)&lt;br /&gt;
&lt;br /&gt;
Einige Sprachen unterscheiden dabei, welche Namen überladen werden dürfen und welche nicht. In [[Java (Programmiersprache)|Java]] ist Methodenüberladung erlaubt, Operatorüberladung außer der schon eingebauten Überladung, wie des +-Operators aber nicht. [[C++]] und andere Sprachen erlauben generell beides.&lt;br /&gt;
&lt;br /&gt;
Coercion ist eine Art implizite [[Typumwandlung]], um zum Beispiel Argumente einer Funktion in die von der Funktion erwarteten Typen umzuwandeln. Coercion ist mit dem Überladen eng verknüpft und Unterschiede sind für den Programmierer nicht unbedingt gleich ersichtlich. &lt;br /&gt;
&lt;br /&gt;
Zum Additionsbeispiel von oben gesellen sich noch zwei weitere hinzu:&lt;br /&gt;
&lt;br /&gt;
 3.14 + 2            (4)&lt;br /&gt;
 3 + 2.14            (5)&lt;br /&gt;
&lt;br /&gt;
In einer Sprache könnte der Additionsoperator lediglich für zwei reelle Zahlen definiert sein. Coercion würde dann dafür sorgen, dass ganze Zahlen zuerst in Fließkommazahlen umgewandelt werden. In (4) und (5) würde dann Coercion zum Einsatz kommen. Es ist aber auch denkbar, dass der Additionsoperator für mehrere Varianten definiert ist.&lt;br /&gt;
&lt;br /&gt;
=== Parametrische Polymorphie ===&lt;br /&gt;
&lt;br /&gt;
Parametrisierte Polymorphie repräsentiert Typen, deren Definitionen Typvariablen enthalten. Dabei können Funktionen in der Regel einen oder mehrere Typparameter haben und die zulässigen Typen besitzen in der Regel eine gemeinsame Struktur. Die polymorphen Funktionen haben implizite oder explizite Typparameter, die den Typ des Funktionsergebnisses für jede Anwendung der Funktion festlegen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; monomorph&amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;TYPE iContainer IS ARRAY OF INTEGER;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; polymorph durch Typvariable&amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;TYPE Stack IS ARRAY OF [TYPVARIABLE]&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inklusionspolymorphie ===&lt;br /&gt;
&lt;br /&gt;
Man unterscheidet zwischen Kompilationszeit-Polymorphie und Laufzeit-Polymorphie. &lt;br /&gt;
&lt;br /&gt;
Kompilationszeit-Polymorphie bedeutet, dass zur Kompilationszeit der Typ des Objekts die aufgerufene Funktion (auch &amp;quot;Methode&amp;quot; genannt) bestimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
Laufzeit-Polymorphie bedeutet, dass erst zur Laufzeit bestimmt wird, welche Methode aufzurufen ist (&amp;#039;&amp;#039;späte Bindung&amp;#039;&amp;#039;). Es kann also vom Programmlauf abhängig sein, welche Methode in Anwendung kommt. Die Laufzeit-Polymorphie ist einer der wichtigsten Bestandteile der [[objektorientierte Programmierung|objektorientierten Programmierung]] und wurde zuerst in der Programmiersprache [[Smalltalk]] umgesetzt. Ein weiteres Beispiel für &amp;#039;&amp;#039;späte Bindung&amp;#039;&amp;#039; sind &amp;#039;&amp;#039;generische Methoden&amp;#039;&amp;#039; wie in [[CLOS]].&lt;br /&gt;
&lt;br /&gt;
==== Beispiel ====&lt;br /&gt;
&lt;br /&gt;
Angenommen, eine Anwendung soll statistische Daten sowohl grafisch als auch textuell in Tabellenform darstellen. Außerdem soll es möglich sein, die Darstellungsmethoden über [[Plugin]]s zu erweitern. Dann erlaubt das Konzept der Polymorphie über das &amp;#039;&amp;#039;VisualizationPlugin&amp;#039;&amp;#039; Interface jede beliebige Implementierung (hier &amp;#039;&amp;#039;GraphDisplayPlugin&amp;#039;&amp;#039;, &amp;#039;&amp;#039;TextDisplayPlugin&amp;#039;&amp;#039;, &amp;#039;&amp;#039;HistogramDisplayPlugin&amp;#039;&amp;#039;) aufzurufen. &lt;br /&gt;
&lt;br /&gt;
Die Anwendung selbst muss bei neuen Plugins nicht geändert werden und kann diese einfach über das Interface mit dem Aufruf von setData und display starten.&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
 interface VisualizationPlugin {&lt;br /&gt;
   public void setData( DisplayData data );&lt;br /&gt;
   public void display();&lt;br /&gt;
 }&lt;br /&gt;
 class GraphDisplayPlugin implements VisualizationPlugin {&lt;br /&gt;
   public void setData( DisplayData data ) { /* set data to be displayed */ }&lt;br /&gt;
   public void display() { /* Show Data as Graph */ }&lt;br /&gt;
 }&lt;br /&gt;
 class TextDisplayPlugin implements VisualizationPlugin {&lt;br /&gt;
   public void setData( DisplayData data ) { /* set data to be displayed */ }&lt;br /&gt;
   public void display() { /* Show Data as table */ }&lt;br /&gt;
 }&lt;br /&gt;
 class HistogramDisplayPlugin implements VisualizationPlugin {&lt;br /&gt;
   public void setData( DisplayData data ) { /* set data and calculate history data */ }&lt;br /&gt;
   public void display() { /* Show history data as Graph */ }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
{{Wikipedia|Seite=Polymorphie_(Programmierung)}}&lt;/div&gt;</summary>
		<author><name>EagleEye</name></author>
	</entry>
</feed>