C# Abstracción
Clases y métodos abstractos
La abstracción de datos es el proceso de ocultar ciertos detalles y mostrar solo información esencial al usuario.
La abstracción se puede lograr con clases abstractas o interfaces (sobre las cuales aprenderás más en el próximo capítulo).
La palabra clave abstract
se utiliza para clases y métodos:
- Clase abstracta: es una clase restringida que no se puede utilizar para crear objetos (para acceder a ella se debe heredar de otra clase).
- Método abstracto: solo se puede utilizar en una clase abstracta y no tiene cuerpo. El cuerpo lo proporciona la clase derivada (heredada de).
Una clase abstracta puede tener métodos tanto abstractos como regulares:
abstract class Animal
{
public abstract void animalSound();
public void sleep()
{
Console.WriteLine("Zzz");
}
}
Según el ejemplo anterior, no es posible crear un objeto de la clase Animal:
Animal myObj = new Animal(); // Generará un error (No se puede crear una instancia de la clase o interfaz abstracta 'Animal')
Para acceder a la clase abstracta, se debe heredar de otra clase. Convirtamos la clase Animal que usamos en el capítulo Polimorfismo en una clase abstracta.
Recuerda del capítulo Herencia C# que usamos el símbolo :
para heredar de una clase, y que usamos la palabra clave override
para anular el método de la clase base.
Ejemplo
// Clase abstracta
abstract class Animal
{
// Método abstracto (no tiene cuerpo)
public abstract void animalSound();
// Método regular
public void sleep()
{
Console.WriteLine("Zzz");
}
}
// Clase derivada (heredada de Animal)
class Pig : Animal
{
public override void animalSound()
{
// El cuerpo de animalSound() se proporciona aquí
Console.WriteLine("The pig says: wee wee");
}
}
class Program
{
static void Main(string[] args)
{
Pig myPig = new Pig(); // Crear un objeto Pig
myPig.animalSound(); // Llame al método abstracto
myPig.sleep(); // Llame al método regular
}
}
¿Por qué y cuándo utilizar clases y métodos abstractos?
Para lograr seguridad, oculte ciertos detalles y muestre solo los detalles importantes de un objeto.
Nota: La abstracción también se puede lograr con Interfaces, sobre las cuales aprenderá más en el próximo capítulo.