<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Polimorfismo</id>
	<title>Polimorfismo - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Polimorfismo"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Polimorfismo&amp;action=history"/>
	<updated>2026-10-21T09:58:05Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Polimorfismo&amp;diff=3730&amp;oldid=prev</id>
		<title>Arribi: /* Concepto */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Polimorfismo&amp;diff=3730&amp;oldid=prev"/>
		<updated>2008-01-25T19:41:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Concepto&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Concepto=&lt;br /&gt;
O polimorfismo trata xerarquías de obxectos ou de clases que implementan a mesma interface, coma se dunha única clase se tratara. Isto permite realizar a ocultación nas clases e ver unha xerarquía de clases como unha única clase.&lt;br /&gt;
No polimorfismo establécese unha correlación entre a chamada a un método e o código das diferentes clases da xerarquía que efectivamente se asocia a esta chamada.&lt;br /&gt;
&lt;br /&gt;
O uso do polimorfismo permite separar o que facer do como facelo. Para que se poida producir polimorfismo entre clases, se debe poder realizar un enlace dinámico entre o método e as diferentes clases.&lt;br /&gt;
&lt;br /&gt;
==Exemplo==&lt;br /&gt;
Supoñamos a seguinte xerarquía de clases:&lt;br /&gt;
&lt;br /&gt;
[[Image:Polimorfismo.gif|center]]&lt;br /&gt;
&lt;br /&gt;
O seguinte código implementa a xerarquía anterior:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
public class BancoDePruebas {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MandoADistanciaUniversal madu = new MandoADistanciaUniversal();&lt;br /&gt;
    Video v = new Video();&lt;br /&gt;
    Dvd dvd1 = new dvd();&lt;br /&gt;
    System.out.println(madu.encender(v));&lt;br /&gt;
    System.out.println(madu.encender(dvd1));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MandoADistanciaUniversal{&lt;br /&gt;
  public String encender(DispositivoVisual dv) {&lt;br /&gt;
    return (dv.play());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
abstract class DispositivoVisual {&lt;br /&gt;
  abstract public String play();&lt;br /&gt;
  abstract public String stop();&lt;br /&gt;
  abstract public String rewind();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class Dvd extends DispositivoVisual {&lt;br /&gt;
  public String play(){&lt;br /&gt;
    return (&amp;quot;dvd play&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public String stop(){&lt;br /&gt;
    return (&amp;quot;dvd stop&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public String rewind(){&lt;br /&gt;
    return (&amp;quot;dvd rewind&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Video extends DispositivoVisual {&lt;br /&gt;
  public String play(){&lt;br /&gt;
    return (&amp;quot;Video play&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public String stop(){&lt;br /&gt;
    return (&amp;quot;Video stop&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public String rewind(){&lt;br /&gt;
    return (&amp;quot;Video rewind&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na clase BancoDePruebas créase un obxecto da clase Vídeo, un obxecto da clase DVD e un obxecto&lt;br /&gt;
MandoADistanciaUniversal. Sobre este último facemos dúas chamadas ao método encender (na primeira, o parámetro é de tipo vídeo, e na segunda, de tipo DVD), cando chegan á clase MandoADistanciaUniversal, o&lt;br /&gt;
enlace dinámico chama ao método play que corresponde a cada dispositivo. &amp;#039;&amp;#039;&amp;#039;E estes enlaces realízanse en tempo de execución&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Aínda que poida parecer o contrario, non podemos relacionar o polimorfismo co concepto de &amp;#039;&amp;#039;&amp;#039;sobrecarga&amp;#039;&amp;#039;&amp;#039; de funcións. A sobrecarga consiste en definir métodos co mesmo nome pero distinta sinatura (diferentes argumentos, tipo ou número). Dado que é posible identificar as sobrecargas en tempo de compilación,&lt;br /&gt;
estarían relacionadas co concepto de &amp;#039;&amp;#039;&amp;#039;enlace estático&amp;#039;&amp;#039;&amp;#039;. Pola contra, no polimorfismo non é posible coñecer en tempo de compilación a que clase da xerarquía estase facendo referencia.&lt;/div&gt;</summary>
		<author><name>Arribi</name></author>
	</entry>
</feed>