es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Si quiero que un subtipo solo pueda derivarse de un único supertipo, debería usar clases abstractas en lugar de una interfaz para asegurar eso?

Básicamente la pregunta en el título pero aquí hay un poco más de detalle:
Tengo un conjunto de clases de las que se pueden crear objetos similares (por ejemplo, animales y tengo las clases Tigre, Cocodrilo, Lobo, etc. lo que quieras). Y los tipos de esos objetos están especificados por el Supertipo del que se derivan. Ahora, algunos objetos pueden derivar de múltiples Supertipos, que obviamente deben implementarse como Interfaces. Pero digamos que tengo un Supertipo específico del que quiero que cada animal solo se derive EXACTAMENTE UNA VEZ (por ejemplo, la familia de animales a la que pertenecen). ¿Significa esto automáticamente que este Supertipo debe ser una clase abstracta para garantizar que solo se pueda extender una vez en un Subtipo?

Edición ya que Michael señaló que mi pregunta no está clara.

Esta pregunta no se trata de un código específico, es más una pregunta teórica sobre tipos, tal vez debería preguntar así: ¿Se puede y se debe utilizar una clase abstracta como herramienta para asegurar que un Subtipo de este Supertipo solo pueda derivarlo una vez? Digamos que para mi ejemplo con animales tengo los Supertipos “Omnívoro”, “Herbívoro” y “Carnívoro” y sé que un animal solo puede ser exactamente uno de ellos, ¿es esta una razón válida para hacer que esos sean clases abstractas y no interfaces?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, una clase abstracta se puede utilizar como una herramienta para asegurarse de que un Subtipo de este Supertipo sólo pueda derivarlo una vez. En su ejemplo, si desea asegurarse de que un animal sólo puede ser exactamente uno de los Supertipos (por ejemplo, Omnívoro, Herbívoro o Carnívoro), entonces sería mejor utilizar una clase abstracta para esos Supertipos. Esto aseguraría que los Subtipos (por ejemplo, Tigre, Cocodrilo, Lobo, etc.) sólo pueden derivar de uno de los Supertipos, y no de varios.

Comments are closed.