¿Cuál es el uso exacto de una clase abstracta? ¿No es posible hacer las mismas cosas en una clase ordinaria ya que es una clase abstracta?Uso exacto de la clase abstracta
Respuesta
Una clase abstracta se utiliza cuando tiene alguna funcionalidad base que desea que hereden las subclases, pero no tendría sentido crear una instancia de la clase base. Por ejemplo, si tiene algo así como una clase base de Forma, puede tener una implementación integrada que pueda ser utilizada por las subclases, así como los métodos de interfaz que desee que implementen las subclases. Sin embargo, probablemente no tendría sentido crear un objeto Shape. Una clase abstracta le da esta funcionalidad. Otro gran ejemplo de uso de clases abstractas es el abstract factory pattern.
Usa una clase abstracta para proporcionar una implementación concreta pero no permitir la creación de instancias. Siempre puedes crear una instancia de una clase ordinaria que no tiene sentido si no puede funcionar sola. Al mismo tiempo, una interfaz puede no ser suficiente si hay una implementación concreta que sea idéntica en todas las clases implementadas. Una clase abstracta es suficiente. único contrato, sin aplicación, sin instanciación
- interfaz contrato, alguna aplicación, sin instanciación
- Clase: contrato, la ejecución, la instanciación
cómo es posible contratar en tercera clase. porque el contrato significa la declaración de ese método, que significa "abstracto". Y el compilador obliga a convertir en clase abstracta Por eso, ¿cómo es posible contratar en clase normal. Si mi lógica es incorrecta, por favor hazme la corrección. – devsda
diferencia de las clases regulares, abstract
las clases pueden contener abstract
métodos. Actúan de manera similar a los miembros de la interfaz.
Mientras tanto, pueden hacer casi todo lo demás que las clases regulares puede hacer: se pueden aplicar métodos, contienen campos & tipos anidados, se derivan de otra clase, etc.
Las clases regulares se requieren para proporcionar implementaciones para todos métodos.
Las interfaces requieren que no proporcionan implementaciones para todos los métodos.
Las clases abstractas son el único tipo de clase que le permite tener métodos que contienen una implementación, y tienen métodos que no proporcionan una implementación, pero requieren una clase heredada para proporcionarla.
El hecho de que pueda agregar métodos sin una implementación es la razón por la que no puede instanciar una clase abstracta: solo puede crear una instancia de algo que tenga implementaciones para todos sus métodos.
- 1. Derivar clase abstracta de la clase no abstracta
- 2. php clase abstracta extendiendo otra clase abstracta
- 3. clase concreta de la clase abstracta
- 4. Extender la clase Singleton abstracta
- 5. ¿Un puntero a la clase base de la plantilla abstracta?
- 6. referencia a la clase abstracta
- 7. Uso de Windows Form como clase abstracta: ¿qué patrón usar?
- 8. clase abstracta estática
- 9. Constructor privado en la clase abstracta
- 10. Clase abstracta interna: cómo ocultar el uso fuera del ensamblaje?
- 11. Heredar variable estática de la clase abstracta
- 12. abstracción vs clase abstracta
- 13. datos protegidos en la clase abstracta
- 14. serialización de una clase abstracta
- 15. clase abstracta no implementa interfaz
- 16. Derivando una clase abstracta de la clase concreta
- 17. La clase de contrato debe ser una clase abstracta
- 18. Scala Extendiendo Clase abstracta paramétrica
- 19. ForeignKey a la clase abstracta (relaciones genéricas)
- 20. Cuándo usar la clase o interfaz abstracta?
- 21. Clase abstracta 100% frente a la interfaz
- 22. Diferencia entre la clase abstracta y Rasgo
- 23. Java clase abstracta implementa la interfaz
- 24. ¿Qué es la clase abstracta en php?
- 25. método genérico en la clase abstracta
- 26. ¿Puede una clase abstracta extender otra clase abstracta y aumentar la funcionalidad?
- 27. clase abstracta Refactoring en C#
- 28. Base abstracta o clase auxiliar
- 29. delegado C# y clase abstracta
- 30. Genéricos con parámetros genéricos y clase abstracta
Ver: http://stackoverflow.com/questions/56867/interface-vs-base-class –
Eche un vistazo a [Template Method Design Pattern] (http://sourcemaking.com/design_patterns/template_method) Creo la clase abstracta no se puede remplazar allí. – rafek