Tabla de Contenidos

Herencia

Es la propiedad que adquiere un objeto cuando puede transmitir algunos o todos sus elementos a otros objetos de menor jerarquía o recibir algunos o todos los elementos de otros objetos de mayor jerarquía.

Ejemplos

Aplicación en CSharp

En el siguiente ejemplo veremos como es aplicada la herencia en un ejemplo de personas y profesiones donde tendremos:

concepto_herencia.cs
using System;
 
namespace Capacitacion.Herencia
{
    public class Persona
    {
        public int Edad { get; set; }
        public char Sexo { get; set; }
        public string Nombre { get; set; }
 
        public override string ToString()
        {
            var sb = new System.Text.StringBuilder();
            sb.AppendLine($"Nombre: {Nombre}");
            sb.AppendLine($"Sexo:   {Sexo}");
            sb.AppendLine($"Edad:   {Edad}");
            return sb.ToString();
        }
 
    }
 
    public class Bombero: Persona
    {
        public Bombero(Persona persona)
        {
            this.Nombre = persona.Nombre;
            this.Sexo = persona.Sexo;
            this.Edad = persona.Edad;
        }
        public string Escuadron { get; set; }
        public int Numero { get; set; }
        public void ApagarIncendio()
        {
            Console.WriteLine("Apagando Incendio");
        }
 
        public override string ToString()
        {
            var sb = new System.Text.StringBuilder();
            sb.Append(base.ToString());
            sb.AppendLine("Profesion:  Bombero");
            sb.AppendLine($"Escuadron: {Escuadron}");
            sb.AppendLine($"Numero:    {Numero}");
            return sb.ToString();
        }
    }
 
    public class Doctor : Persona
    {
        public Doctor(Persona persona)
        {
            this.Nombre = persona.Nombre;
            this.Sexo = persona.Sexo;
            this.Edad = persona.Edad;
        }
        public string Cedula { get; set; }
        public void Consultar()
        {
            Console.WriteLine("Consultando al paciente");
        }
        public override string ToString()
        {
            var sb = new System.Text.StringBuilder();
            sb.Append(base.ToString());
            sb.AppendLine("Profesion:  Doctor");
            sb.AppendLine($"Cedula:    {Cedula}");
            return sb.ToString();
        }
    }
 
    public class Cirujano : Doctor
    {
        public Cirujano(Doctor doctor) : base(doctor)
        {
            this.Cedula = doctor.Cedula;
        }
        public string Tipo { get; set; }
        public void Operar()
        {
            Console.WriteLine("Operando al paciente");
        }
        public override string ToString()
        {
            var sb = new System.Text.StringBuilder();
            sb.Append(base.ToString());
            sb.AppendLine($"Especialidad: {Tipo}");
            return sb.ToString();
        }
    }
 
    public class Program
    {
        public static void Main(string[] args)
        {
            var persona = new Persona() { Edad = 19, Nombre = "Cesar", Sexo = 'H' };
            Console.WriteLine(persona);
 
            var doctor = new Doctor(persona);
            doctor.Cedula = "ABC1233";
            Console.Write(doctor);
            doctor.Consultar();
            Console.WriteLine();
 
            var cirujano = new Cirujano(doctor);
            cirujano.Tipo = "Ginecologia";
            Console.Write(cirujano);
            cirujano.Consultar();
            cirujano.Operar();
            Console.WriteLine();
 
            var bombero = new Bombero(persona);
            bombero.Escuadron = "L501";
            bombero.Numero = 669;
            Console.Write(bombero);
            bombero.ApagarIncendio();
 
            Console.ReadLine();
        }
    }
}