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.

Etiquetas

Deja un comentario

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