Está en la página 1de 8

Fundamentos de C# y

POO

Ing. Francisco Miguel Ruiz Hidalgo MSc.


Herencia
• Vimos que podemos crear clases con miembros en nuestra aplicación.
Ahora nos toca aprender acerca de la herencia un mecanismo que
nos ayuda a compartir código entre clases.
• La herencia es tan importante que es considerada uno de los cuatro
pilares de la programación orientada a objetos.
• Veremos una introducción a la herencia y su uso básico.
Herencia
• La herencia es un mecanismo con el cual podemos construir una clase a
partir de otra, compartiendo así código entre clases.
• En una relación de herencia tenemos una clase base y una clase derivada,
la clase derivada hereda código de la clase base, para indicar que una clase
hereda de otra debemos colocar luego de la declaración de la clase dos
puntos y el nombre de la clase base.
Clase derivada Clase base
public class Persona : Entidad
{...}
• Todas las clases que hemos utilizado heredan de una clase base llamada
Object
• Esto quiere decir que todas nuestras clases comparten código con la clase
Object.
Herencia
• Por ejemplo: el método ToString, toda clase que haga va a tener un
método ToString pues dicho método esta definido en la clase Object,
por tanto todas las clases tienen definido el método ToString.
• Esto lo podíamos ver cuando instanciábamos la clase persona y a
través del objeto decíamos punto y veíamos que teníamos métodos
como ToString el cual aunque no se encontraba dentro de la clase
persona si se encuentra dentro de la clase Object.
Herencia
• En C# las clases solamente pueden tener una clase base, una clase no
puede heredar de varias clases solo de una. Sin embargo una clase
base puede tener tantas clases derivadas como deseamos, esto se
hace evidente porque la clase Object es la clase base de todas las
clases de nuestra aplicación.
• Ejemplo: creamos un nuevo proyecto de nombre Herencia, en el
archivo Program.cs
• Supongamos que queremos tener unas propiedades comunes en
distintas clases de nuestra aplicación como ID, fecha creación y fecha
modificación, para no tener que repetir esas propiedades en cada
clase, crearemos una clase base.
Herencia
• Creamos la clase, de nombre Entidad, con 3 propiedades ID,
FechaCreacion, FechaModificacion.
public class Entidad
{
public int ID { get; set; }
public DateTime FechaCreacion { get; set; }
public DateTime FechaModificacion { get; set; }

• No hay nada en esta clase que indique que es una clase base, una
clase base queda definida como tal cuando otra clase hereda de ella.
• Ahora vamos a crear una clase Persona la cual va heredar de la clase
Entidad, tendrá una propiedad Nombre
Herencia
• Ahora vamos a crear una clase Persona la cual va heredar de la clase Entidad,
tendrá una propiedad Nombre.
public class Persona : Entidad
{
public string? Nombre { get; set; }
}

• De este modo Entidad es clase base de Persona, en Persona yo puedo colocar


cualquier propiedad que se corresponda con una Persona además de sus
atributos o métodos ganados por heredar de Entidad.
• Ahora en void Main, vamos a instanciar nuestra clase Persona, var persona igual
a new Persona, si decimos persona punto veremos que tenemos la propiedad
Nombre y también las propiedades que hereda de la clase base Entidad.
Herencia
• Podemos tener tantas clase derivadas como queramos. Si creamos la clase Producto que hereda
de la clase Entidad, la clase Producto tiene 2 propiedades como: Descripcion y Precio.
• Ahora en el void Main, instanciar la clase Producto, verificar que tenemos acceso a las
propiedades tanto de la clase Producto como de la clase Entidad.
• De esta manera evitamos tener que repetir propiedades de la clase Entidad en la clase Persona y
Producto, sino tuviéramos Herencia tuviéramos que copiar cada una de las propiedades y
pegarlas en cada clase. Esto es un problema, siendo el primero que estamos repitiendo código y
la segunda razón es que no podemos aprovechar Polimorfismo.
• Recordemos que el Polimorfismo nos permite programar contra Abstracciones para hacer nuestro
código mas flexible, además podemos programar contra Interfaces también podemos hacerlo
contra clases base como la clase Entidad.
• La Herencia es mas que simplemente compartir código es poder reutilizar código de modo que
tendremos métodos o funcionalidades en general la cual podemos programar contra una
Abstracción como la clase Entidad y funcionara para cualquier clase derivada como Persona o
Producto de una manera dinámica.

También podría gustarte