En C# es posible heredar campos y metodos de una clase a otra
podemos agrupar el concepto herencia en dos
Clase derivada(hijo)la clase que hereda de otra clase
Clase base(padre)la clase de que hereda
para heredar una clase se utilizan dos puntos (:)
Nel ejemplo seguiente la clase Car hereda los campos y metodos de la clase padre Vehiculo
Ejemplo
class Vehiculo // base class (parent)
{
public string brand = "Ford"; // Vehiculo field
public void honk() // Vehiculo method
{
Console.WriteLine("Tuut, tuut!");
}
}
class Car : Vehiculo // derived class (child)
{
public string modelName = "Mustang"; // Car field
}
class Program
{
static void Main(string[] args)
{
// Create a myCar object
Car myCar = new Car();
// Call the honk() method (From the Vehiculo class) on the myCar object
myCar.honk();
// Display the value of the brand field (from the Vehiculo class) and the value of the modelName from the Car class
Console.WriteLine(myCar.brand + " " + myCar.modelName);
}
}
Se debe utilizar las herencias para reutilizar el codigo
...
La palabra sealed
Si no desea que otras clases hereden de una clase usamos la palabra sealed
Ejemplo
sealed class Vehiculo
{
...
}
class Car : Vehiculo
{
...
}
La salida sera una mensaje de error
Polimorfismo
Polimorfismo significa "muchas formas", y ocurre cuando tenemos muchas clases que están relacionadas entre sí por
herencia.
La herencia nos permite heredar campos y métodos de otra clase.
Polimorfismo utiliza esos métodos para realizar diferentes tareas.
Esto nos permite realizar una sola acción de diferentes maneras.
Por ejemplo, piense en una clase base llamada Animalque tiene un método llamado animalSound(). Las clases derivadas
de animales podrían ser cerdos, gatos, perros, pájaros, y también tienen su propia implementación de un sonido
animal (el cerdo gruñe y el gato maúlla, etc.):
Ejemplo
class Animal // Base class (parent)
{
public void animalSound()
{
Console.WriteLine("The animal makes a sound");
}
}
class Pig : Animal // Derived class (child)
{
public void animalSound()
{
Console.WriteLine("The pig says: wee wee");
}
}
class Dog : Animal // Derived class (child)
{
public void animalSound()
{
Console.WriteLine("The dog says: bow wow");
}
}
Ahora podemos crear objetos Pig y Dog y llamar al método animalSound() en ambos:
Ejemplo
class Animal // Base class (parent)
{
public void animalSound()
{
Console.WriteLine("The animal makes a sound");
}
}
class Pig : Animal // Derived class (child)
{
public void animalSound()
{
Console.WriteLine("The pig says: wee wee");
}
}
class Dog : Animal // Derived class (child)
{
public void animalSound()
{
Console.WriteLine("The dog says: bow wow");
}
}
class Program
{
static void Main(string[] args)
{
Animal myAnimal = new Animal(); // Create a Animal object
Animal myPig = new Pig(); // Create a Pig object
Animal myDog = new Dog(); // Create a Dog object
myAnimal.animalSound();
myPig.animalSound();
myDog.animalSound();
}
}
La salida sera:
The animal makes a sound
The animal makes a sound
The animal makes a sound
La salida no es la eserada porque el metodo de la clase base anula el metodo de la clase derivada, pero en C# tenemos dos palabras mas una para anular el metodo de la clase base virtual y la palavra override para la clase derivada
Ejemplo
class Animal // Base class (parent)
{
public virtual void animalSound()
{
Console.WriteLine("The animal makes a sound");
}
}
class Pig : Animal // Derived class (child)
{
public override void animalSound()
{
Console.WriteLine("The pig says: wee wee");
}
}
class Dog : Animal // Derived class (child)
{
public override void animalSound()
{
Console.WriteLine("The dog says: bow wow");
}
}
class Program
{
static void Main(string[] args)
{
Animal myAnimal = new Animal(); // Create a Animal object
Animal myPig = new Pig(); // Create a Pig object
Animal myDog = new Dog(); // Create a Dog object
myAnimal.animalSound();
myPig.animalSound();
myDog.animalSound();
}
}
La salida sera:
The animal makes a sound
The pig says: wee wee
The dog says: bow wow
El uso de la Herencia y polimorfismo es util por la reutilizacion del codigo
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias