Bienvenido a nuestra web, en este lugar encontrarás la resolución que necesitas.
Solución:
Sé que el uso básico de las clases abstractas es crear plantillas para futuras clases. ¿Pero hay más usos de ellos?
No solo puede definir una plantilla para niños, sino que las Clases abstractas ofrecen el beneficio adicional de permitirle definir la funcionalidad que sus clases secundarias pueden utilizar más adelante.
No podía proporcionar una implementación de método predeterminada en una interfaz anterior a Java 8.
¿Cuándo debería preferirlas a las interfaces y cuándo no?
Las clases abstractas son una buena opción si desea proporcionar detalles de implementación a sus hijos, pero no desea permitir que se cree una instancia de una instancia de su clase directamente (lo que le permite definir parcialmente una clase).
Si desea simplemente definir un contrato para que lo sigan los Objetos, utilice una Interfaz.
Además, ¿cuándo son útiles los métodos abstractos?
Los métodos abstractos son útiles de la misma manera que lo es definir métodos en una interfaz. Es una forma en que el diseñador de la clase Abstracta dice “cualquier hijo mío DEBE implementar este método”.
lea el siguiente artículo http://mycodelines.wordpress.com/2009/09/01/in-which-scenario-we-use-abstract-classes-and-interfaces/
clases abstractas
-> Cuando tenga un requisito en el que su clase base debe proporcionar la implementación predeterminada de ciertos métodos, mientras que otros métodos deben estar abiertos a ser anulados por clases secundarias, use clases abstractas.
Por ejemplo, tome de nuevo el ejemplo de la clase Vehicle anterior. Si queremos que todas las clases derivadas de Vehicle implementen el método Drive() de forma fija, mientras que los otros métodos pueden ser anulados por clases secundarias. En tal escenario, implementamos la clase Vehicle como una clase abstracta con una implementación de Drive mientras dejamos los otros métodos/propiedades como abstractos para que puedan ser anulados por clases secundarias.
–> El propósito de una clase abstracta es proporcionar una definición común de una clase base que pueden compartir múltiples clases derivadas.
Por ejemplo, una biblioteca de clases puede definir una clase abstracta que se usa como parámetro para muchas de sus funciones y requiere que los programadores usen esa biblioteca para proporcionar su propia implementación de la clase mediante la creación de una clase derivada.
Usar una clase abstracta
Al crear una biblioteca de clases que se distribuirá o reutilizará ampliamente, especialmente para los clientes, use una clase abstracta en lugar de una interfaz; porque simplifica el control de versiones. Esta es la práctica utilizada por el equipo de Microsoft que desarrolló la Biblioteca de clases base. (COM se diseñó en torno a las interfaces). Utilice una clase abstracta para definir una clase base común para una familia de tipos. Utilice una clase abstracta para proporcionar un comportamiento predeterminado. Subclase solo una clase base en una jerarquía a la que pertenece lógicamente la clase.
A un nivel muy alto:
La abstracción de cualquier tipo se reduce a separar preocupaciones. Al código “Cliente” de una abstracción no le importa cómo se cumple el contrato expuesto por la abstracción. Por lo general, no le importa si un string la clase usa un nullImplementación de almacenamiento interno terminado o con seguimiento de longitud de búfer, por ejemplo. La encapsulación oculta los detalles, pero al crear clases/métodos/etc. abstracto, permite que la implementación cambie o que se agreguen nuevas implementaciones sin afectar el código del cliente.
Aquí puedes ver las reseñas y valoraciones de los lectores
Tienes la posibilidad dar visibilidad a esta división si te fue útil.