Herencia en C#

Hola a todos, hoy os voy a explicar como se realiza la herencia en C#.

La herencia en programación es muy importante para la reutilizacion de código.

En C#, tenemos algunas diferencias con Java, pero solo de sintaxis, la idea es la misma al final.

La idea es tener varias clases, teniendo una clase como padre y otras como hijas.

Veamos un pequeño ejemplo, una clase Vehiculo:


class Vehiculo { 

    private int _id;
    private String _marca;
    private String _modelo;
    private int _km;
    private double _precio;

    public Vehiculo(int id, string marca, string modelo, int km, double precio)
    {
        this._id = id;
        this._marca = marca;
        this._modelo = modelo;
        this._km = km;
        this._precio = precio;
    }

    public int id { get => _id; set => _id = value; }
    public string marca { get => _marca; set => _marca = value; }
    public string modelo { get => _modelo; set => _modelo = value; }
    public int km { get => _km; set => _km = value; }
    public virtual double precio { get => _precio; set => _precio = value; }

    public override string ToString()
    {
        return "Marca: " + marca + ", modelo: " + modelo + " con un precio de " + precio;
    }

}

Ahora vamos a crear dos clases hijas, clase Moto y clase Coche:

— Clase Coche


class Coche : Vehiculo
{
    private bool _airbag;

    public Coche(int id, string marca, string modelo, int km, double precio, bool airbag) :base(id, marca, modelo, km, precio)
    {
        this._airbag = airbag;
    }

    public bool airbag { get => _airbag; set => _airbag = value; }

    public override double precio
    {
        get
        {
            if (airbag)
            {
                return base.precio + 200;
            }

            return base.precio;
        }


    }

    public override string ToString()
    {
        if (airbag)
        {
            return base.ToString() + " tiene airbag";
        }
        else
        {
            return base.ToString() + " no tiene airbag";
        }
          
    }

}

— Clase Moto

  
class Moto : Vehiculo
{
    private bool _sidecar;

    public Moto(int id, string marca, string modelo, int km, double precio, bool sidecar) : base(id, marca, modelo, km, precio)
    {
        this._sidecar = sidecar;
    }

    public bool sidebar { get => _sidecar; set => _sidecar = value; }

    public override double precio {
        get
        {
            if(sidebar)
            {
                return base.precio + 50;
            }

            return base.precio;
        }
                
            
    }

    public override string ToString()
    {
        if (sidebar)
        {
            return base.ToString() + " tiene sidecar";
        }
        else
        {
            return base.ToString() + " no tiene sidecar";
        }

    }

}

Para indicar que una clase hereda de otra, lo haremos de esta forma:


 class Moto : Vehiculo

También podemos heredar métodos o propiedades, para ello en la clase padre deberemos escribir en el método virtual:


public virtual double precio { get => _precio; set => _precio = value; }

Y en las clases hijas, se debe colocar un override en el metodo para indicar que se esta sobrescribiendo:


public override double precio {
    get
    {
        if(sidebar)
        {
            return base.precio + 50;
        }

        return base.precio;
    }
                
            
}

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

1 comentario

  1. Luis maritnez

    me gustaria saber como puedo sobrecargar la clase moto?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *