Siempre que tenemos un método o una propiedad abstracta, la clase que los contenga debe ser abstracta.
De igual manera, debemos hacer el override en la clase que está heredando de esta clase abstracta en dicha propiedad o método
Introducción
Fundamentos de Programación Orientada a Objetos con C#
Prerequisitos
¿Que es la programación orientada a objetos (POO)?
Creando tu primera clase y objeto
Concepto de clases y objetos
Creando clases y propiedades
Creando clases complejas
Trabajando con clases
Constructor y datos iniciales en una clase
Métodos dentro de una clase
Tipos registro y estructura
Modificadores de acceso
Conceptos clave en POO
Encapsulamiento
¿Que es herencia?
Usando herencia en C#
Abstracción
Polimorfismo
Trabajando con interfaces
¿Que es una interfaz?
Usando interfaces
Interfaces vs Clases abstractas
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
La abstracción es un concepto poderoso en la programación orientada a objetos (POO) que permite crear componentes más genéricos y reutilizables. Al no incluir detalles específicos desde el inicio, podemos aplicar abstracción para beneficiar tanto el diseño como la reutilización del código. Este principio se combina bien con otros elementos avanzados de la programación como los patrones de diseño.
Para integrar la abstracción en nuestro código, podemos usar clases y métodos abstractos en C#. Aquí presentamos un ejemplo ilustrativo:
// Definición de una clase abstracta con un método abstracto
public abstract class Heroe {
public abstract string SalvarElMundo();
}
Este método SalvarElMundo()
es abstracto y no contiene detalles de implementación. La clase Heroe
debe ser abstracta, dado que una clase no abstracta no puede tener métodos abstractos.
Al heredar de una clase abstracta, como es el caso de nuestra clase SuperHeroe
que hereda Heroe
, es obligatorio implementar el método abstracto en la clase hija. A continuación, el ejemplo de implementación:
public class SuperHeroe : Heroe {
public override string SalvarElMundo() {
return $"{NombreIdentidadSecreta} ha salvado el mundo";
}
}
Visual Studio ayuda a identificar este tipo de errores y exige que se añada el override
para implementar el cuerpo del método abstracto.
Además de métodos abstractos, las clases abstractas también pueden contener métodos "normales" que no necesitan ser implementados en las clases hijas. Aquí un ejemplo que muestra ambos tipos de métodos en una clase:
public abstract class Heroe {
// Método abstracto
public abstract string SalvarElMundo();
// Método no abstracto
public string SalvarLaTierra() {
return $"{Nombre} ha salvado la tierra";
}
}
La clase SuperHeroe
puede heredar tanto métodos abstractos como no abstractos sin mostrar errores al no tener que sobrescribir el método no abstracto:
public class SuperHeroe : Heroe {
public override string SalvarElMundo() {
return $"{NombreIdentidadSecreta} ha salvado el mundo";
}
}
Similar a los métodos, se pueden declarar propiedades abstractas obligando a las clases hijas a definirlas. Esto se hace de la siguiente manera:
public abstract class Heroe {
public abstract string Nombre { get; set; }
}
En la clase SuperHeroe
, la implementación de propiedades abstractas también es obligatoria:
public class SuperHeroe : Heroe {
// Implementación de la propiedad abstracta
public override string Nombre { get; set; } = "Superman";
public override string SalvarElMundo() {
return $"{NombreIdentidadSecreta} ha salvado el mundo";
}
}
La abstracción es esencial para permitir la evolución de nuestros sistemas sin refactorizaciones masivas, maximizando la reutilización de código y la cohesión. Estos principios no solo mejoran el diseño del software sino que impulsan la robustez y el mantenimiento a largo plazo. Sigamos explorando estos conceptos en nuestro camino para dominar la programación orientada a objetos.
Aportes 7
Preguntas 2
Siempre que tenemos un método o una propiedad abstracta, la clase que los contenga debe ser abstracta.
De igual manera, debemos hacer el override en la clase que está heredando de esta clase abstracta en dicha propiedad o método
Las clases abstractas obligan a las clases que la heredan a implementar sus métodos abstractos:
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?