MEJOR SITIO PARA DESARROLLADORES WEB
Lenguaje C#. W3Schools lecciones en español

Ua En De

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
  }
}

Inténtalo tú mismo »

¿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.