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.
me gustaria saber como puedo sobrecargar la clase moto?