La herencia significa que se pueden crear nuevas clases partiendo de clases existentes, que tendrá todas los atributos, propiedades y los métodos de su 'superclase' o 'clase padre' y además se le podrán añadir otros atributos, propiedades y métodos propios.
clase padre en c#
Clase de la que desciende o deriva una clase. Las clases hijas (descendientes) heredan (incorporan) automáticamente los atributos, propiedades y métodos de la la clase padre.
Subclase en c#
Clase descendiente de otra. Hereda automáticamente los atributos, propiedades y métodos de su superclase. Es una especialización de otra clase. Admiten la definición de nuevos atributos y métodos para aumentar la especialización de la clase.
Veamos un ejemplo de herencia en la siguiente figura: Tenemos una clase Profesor que hereda de la clase Personal.
A continuación veremos algunos ejemplos para entender mejor sobre herencia en c#
Ejercicios Resueltos de Herencia en C#
Ejemplo 1
Ahora plantearemos el primer problema utilizando herencia. Supongamos que necesitamos implementar dos clases que llamaremos Suma y Resta. Cada clase tiene como atributo valor1, valor2 y resultado. Las propiedades a definir son Valor1, Valor2 y Resultado, el método Operar (que en el caso de la clase "Suma" suma los dos Valores y en el caso de la clase "Resta" hace la diferencia entre Valor1 y Valor2.
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
Herencia
{
public class Operacion
{
protected
int valor1;
protected
int valor2;
protected
int resultado;
public int Valor1
{
set
{
valor1 = value;
}
get
{
return valor1;
}
}
public int Valor2
{
set
{
valor2 = value;
}
get
{
return valor2;
}
}
public int Resultado
{
protected set
{
resultado = value;
}
get
{
return resultado;
}
}
}
public class Suma : Operacion
{
public void Operar()
{
Resultado = Valor1 + Valor2;
}
}
public class Resta : Operacion
{
public void Operar()
{
Resultado = Valor1 - Valor2;
}
}
class Prueba
{
static void Main(string[] args)
{
Suma suma1 = new Suma();
suma1.Valor1 = 10;
suma1.Valor2 = 7;
suma1.Operar();
Console.WriteLine("La
suma de " + suma1.Valor1 + " y
" +
suma1.Valor2 + " es " +
suma1.Resultado);
Resta resta1 = new
Resta();
resta1.Valor1 = 8;
resta1.Valor2 = 4;
resta1.Operar();
Console.WriteLine("La
diferencia de " + resta1.Valor1 +
" y " + resta1.Valor2 + " es " + resta1.Resultado);
Console.ReadKey();
}
}
}
Crear una clase Persona que tenga como atributos el nombre y la edad (definir las propiedades para poder acceder a dichos atributos). Definir como responsabilidad un método para imprimir.
Plantear una segunda clase Empleado que herede de la clase Persona. Añadir un atributo sueldo ( y su propiedad) y el método para imprimir su sueldo.
Definir un objeto de la clase Persona y llamar a sus métodos y propiedades. También crear un objeto de la clase Empleado y llamar a sus métodos y propiedades.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Herencia
{
public class Persona
{
protected string
nombre;
protected int edad;
public string Nombre
{
set
{
nombre = value;
}
get
{
return nombre;
}
}
public int Edad
{
set
{
edad = value;
}
get
{
return edad;
}
}
public void
Imprimir()
{
Console.WriteLine("Nombre:
" + Nombre);
Console.WriteLine("Edad:
" + Edad);
}
}
public class Empleado : Persona
{
protected float
sueldo;
public float Sueldo
{
set
{
sueldo = value;
}
get
{
return sueldo;
}
}
new public void Imprimir()
{
base.Imprimir();
Console.WriteLine("Sueldo:
" + Sueldo);
}
}
class Prueba
{
static void Main(string[] args)
{
Persona persona1 = new
Persona();
persona1.Nombre = "Juan";
persona1.Edad = 25;
Console.WriteLine("Los
datos de la persona son: ");
persona1.Imprimir();
Empleado empleado1 = new
Empleado();
empleado1.Nombre
= "Maria";
empleado1.Edad = 42;
empleado1.Sueldo = 2524;
Console.WriteLine("Los
datos del empleado son: ");
empleado1.Imprimir();
Console.ReadKey();
}
}
}
Al ejecutar el código muestra el siguiente resultado