AnteriorPosterior

6.7. Polimorfismo y sobrecarga

  Curso: Programación en C# (2015), por Nacho Cabanes

6.7. Polimorfismo y sobrecarga

El concepto de "polimorfismo" se refiere a que una misma función (un método) puede tener varias formas, ya sea porque reciba distintos tipos de parámetros y/o en distinta cantidad, o porque incluso se aplique a distintos objetos.

Existen dos tipos especialmente importantes de polimorfismo:

  • En nuestro último ejemplo (06_06a), los dos constructores "Puerta()" y "Puerta(int ancho, int alto)", que se llaman igual pero reciben distintos parámetros, y se comportan de forma que puede ser distinta, son ejemplos de "sobrecarga" (también conocida como "polimorfismo ad-hoc"). Es un tipo de polimorfismo en el que el compilador sabe en tiempo de compilación a qué método se debe llamar.
  • El caso opuesto es el "polimorfismo puro", en el que un mismo método se aplica a distintos objetos de una misma jerarquía (como el "MostrarEstado" del ejemplo 06_05a, que se puede aplicar a una puerta o a un portón), y en ese caso el compilador puede llegar a no ser capaz de saber en tiempo de compilación a qué método se debe llamar, y lo tiene que descubrir en tiempo de ejecución. Es algo que nos encontraremos un poco más adelante, cuando hablemos de "funciones virtuales".

Ejercicios propuestos:

Ejercicio propuesto 6.7.1: A partir de las clases del ejercicio 6.6.1, añade a la clase "Persona" un nuevo método Saludar, que reciba un parámetro, que será el texto que debe decir esa persona cuando salude.
Ejercicio propuesto 6.7.2: Amplía el proyecto del ejercicio 6.6.2 (Libro): la clase Libro tendrá un segundo constructor que permita dar valores al autor y el título, pero no a la ubicación, que tomará el valor por defecto "No detallada".
Ejercicio propuesto 6.7.3: Amplía el esqueleto del ConsoleInvaders (6.6.3): La clase Nave tendrá un segundo constructor, sin parámetros, que prefijará su posición inicial a (500,600). La clase Enemigo tendrá un segundo constructor, con parámetros X e Y, para poder colocar un enemigo en cualquier punto desde Main.
Ejercicio propuesto 6.7.4: Crea dos nuevos métodos en la clase Vehiculo (ejercicio 6.6.4): uno llamado Circular, que fijará su "velocidad" (un nuevo atributo) a 50, y otro Circular(v), que fijará su velocidad al valor que se indique como parámetro.

Actualizado el: 28-01-2015 14:33

AnteriorPosterior