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
Gracias
ResponderEliminarexcelente articulo y ejemplo
ResponderEliminarEstá muy claro todo
ResponderEliminaresas subclases las creas en pestañas separadas????
ResponderEliminarpara tener mayor orden, con fiheros (pestañas), en la ejecucion no cambia, puedes ponerlo todo en un solo fichero.
Eliminarme pueden ayudar con un ejercicio de herencia simple me esta costando
ResponderEliminardebede impirimir lo siguiente: soy un mamifero llamado: xxxxxx
De la especie:xxxxx
Peso en kg: xxxxx
Estoy en la jaula: xx
algo asi casi no le entiendo.