Clase abstracta vs clase concreta

La mayoría de los populares lenguajes de programación orientados a objetos modernos como Java y C # están basados ​​en clases. Alcanzan los conceptos orientados a objetos, como la encapsulación, la herencia y el polimorfismo mediante el uso de clases. Las clases son una representación abstracta de objetos del mundo real. Las clases pueden ser concretas o abstractas dependiendo del nivel de implementación de las funcionalidades de sus métodos. Una clase concreta implementa completamente todos sus métodos. Una clase abstracta se puede considerar como una versión limitada de una clase regular (concreta), donde puede contener métodos implementados parcialmente. Por lo general, las clases concretas se denominan (solo) clases.

¿Qué es la clase de hormigón?

La clase predeterminada es una clase concreta. La palabra clave class se usa para definir clases (por ejemplo, en Java). Y, por lo general, simplemente se denominan clases (sin el adjetivo concreto). Las clases concretas representan la representación conceptual de los objetos del mundo real. Las clases tienen propiedades llamadas atributos. Los atributos se implementan como variables globales y de instancia. Los métodos en las clases representan o definen el comportamiento de estas clases. Los métodos y atributos de las clases se denominan miembros de la clase. Típicamente, la encapsulación se logra al hacer que los atributos sean privados, al tiempo que se crean métodos públicos que se pueden usar para acceder a esos atributos. Un objeto es la instancia de una clase. La herencia permite al usuario extender clases (llamadas subclases) desde otras clases (llamadas superclases). El polimorfismo permite al programador sustituir un objeto de una clase en lugar de un objeto de su superclase. Típicamente, los sustantivos encontrados en la definición del problema se convierten directamente en clases en el programa. Y de manera similar, los verbos se convierten en métodos. Público, privado y protegido son los modificadores de acceso típicos utilizados para las clases.

¿Qué es la clase abstracta?

Las clases abstractas se declaran usando la palabra clave Abstract (por ejemplo, en Java,). Por lo general, las clases abstractas, también conocidas como clases base abstractas (ABC), no se pueden instanciar (no se puede crear una instancia de esa clase). Por lo tanto, las clases abstractas solo tienen sentido si el lenguaje de programación admite la herencia (capacidad de crear subclases desde la extensión de una clase). Las clases abstractas generalmente representan un concepto abstracto o entidad con implementación parcial o nula. Por lo tanto, las clases abstractas actúan como clases principales a partir de las cuales se derivan las clases secundarias para que la clase secundaria comparta las características incompletas de la clase principal y se pueda agregar funcionalidad para completarlas.

Las clases abstractas pueden contener métodos abstractos. Las subclases que extienden una clase abstracta pueden implementar estos métodos abstractos (heredados). Si la clase secundaria implementa todos los métodos abstractos, se convierte en una clase concreta. Pero si no es así, la clase secundaria también se convierte en una clase abstracta. Lo que todo esto significa es que, cuando el programador nomina una clase como Resumen, está diciendo que la clase estará incompleta y tendrá elementos que las subclases heredadas deben completar. Esta es una buena manera de crear un contrato entre dos programadores, lo que simplifica las tareas en el desarrollo de software. El programador, que escribe el código para heredar, debe seguir las definiciones de método exactamente (pero, por supuesto, puede tener su propia implementación).

¿Cuál es la diferencia entre la clase abstracta y la clase concreta?

Las clases abstractas generalmente tienen implementación parcial o nula. Por otro lado, las clases concretas siempre tienen una implementación completa de su comportamiento. A diferencia de las clases concretas, las clases abstractas no pueden ser instanciadas. Por lo tanto, las clases abstractas deben ampliarse para que sean útiles. Las clases abstractas pueden contener métodos abstractos, pero las clases concretas no pueden. Cuando se extiende una clase abstracta, todos los métodos (tanto abstractos como concretos) se heredan. La clase heredada puede implementar cualquiera o todos los métodos. Si no se implementan todos los métodos abstractos, esa clase también se convierte en una clase abstracta.