Domitienda. Hosting ASP .NET 3.5 / SQL SERVER 2005
  buscar 
novedades
Recibe las ultimas noticias y los mejores articulos en tu email
Secciones
 • .NET Framework
 • ADO .NET
 • Ajax
 • Asp .NET
 • Biztalk
 • C#
 • Commerce Server
 • Exchange
 • IIS
 • Metodologías
 • J#
 • Office
 • Reporting Services
 • Seguridad
 • SEO
 • Servicios Web
 • Sharepoint
 • Silverlight
 • SQL Server
 • Visual Basic .NET
 • Visual C++ .NET
 • Visual Studio
 • WCF
 • Windows
 • Workflow Foundation
 • WPF
 • XAML
 • XML
 • Dynamics
 • Noticias
 • Articulos
 • Tutoriales
 • Eventos
 • Cursos
 • Ofertas Empleo
 • RSS
Contacto
¿Quieres saber quien es el creador de Clikear?

Tutorial C#

Concepto de polimorfismo

 

El polimorfismo es otro de los pilares fundamentales de la programación orientada a objetos. Es la capacidad de almacenar objetos de un determinado tipo en variables de tipos antecesores del primero a costa, claro está, de sólo poderse acceder a través de dicha variable a los miembros comunes a ambos tipos. Sin embargo, las versiones de los métodos virtuales a las que se llamaría a través de esas variables no serían las definidas como miembros del tipo de dichas variables, sino las definidas en el verdadero tipo de los objetos que almacenan.

 

A continuación se muestra un ejemplo de cómo una variable de tipo Persona puede usarse para almacenar objetos de tipo Trabajador. En esos casos el campo Sueldo del objeto referenciado por la variable no será accesible, y la versión del método Cumpleaños() a la que se podría llamar a través de la variable de tipo Persona sería la definida en la clase Trabajador, y no la definida en Persona:

 

            using System;

 

            class Persona

            {

               public string Nombre;      // Campo de cada objeto Persona que almacena su nombre

               public int Edad;               // Campo de cada objeto Persona que almacena su edad

               public string NIF;             // Campo de cada objeto Persona que almacena su NIF

 

               public virtual void Cumpleaños() // Incrementa en uno la edad del objeto Persona

               {

                        Console.WriteLine(“Incrementada edad de persona”);

               }

                                  

               public Persona (string nombre, int edad, string nif) // Constructor de Persona

               {

                        Nombre = nombre;

                        Edad = edad;

                        NIF = nif;

               }

 

            }

 

            class Trabajador: Persona

            {

               int Sueldo; // Campo de cada objeto Trabajador que almacena cuánto gana

 

               Trabajador(string nombre, int edad, string nif, int sueldo): base(nombre, edad, nif)

               {                // Inicializamos cada Trabajador en base al constructor de Persona

                        Sueldo = sueldo;

               }

  

               public override Cumpleaños()

               {

                        Edad++;

                        Console.WriteLine("Incrementada edad de trabajador");

               }

                       

               public static void Main()

               {

                        Persona p = new Trabajador("Josan", 22, "77588260-Z", 100000);

 

                        p.Cumpleaños();     

                        // p.Sueldo++; //ERROR: Sueldo no es miembro de Persona

               }

            }

 

El mensaje mostrado por pantalla al ejecutar este método confirma lo antes dicho respecto a que la versión de Cumpleaños() a la que se llama, ya que es:

 

      Incrementada edad de trabajador

 

 

 

Principal