Pregunta

¿Es necesario que una clase abstracta tenga al menos un método abstracto?

¿Fue útil?

Solución

El tema de esta publicación y el cuerpo hacen dos preguntas diferentes:

  1. ¿Debería tener al menos un miembro abstracto?
  2. ¿Es necesario tener al menos un miembro abstracto?

La respuesta al #2 es definitivamente no.

La respuesta al #1 es subjetiva y una cuestión de estilo. Personalmente diría que sí. Si su intención es evitar que una clase (sin métodos abstractos) sea instanciado, la mejor manera de manejar esto es con un privateprotected constructor, no marcándolo abstract.

Otros consejos

No, no es necesario. Ves esto a menudo de vuelta "Método de plantilla" patrón de diseño, como HttpServlet, en el que cada método ya tiene un comportamiento predeterminado definido y eres libre de anular solo uno (o más) de ellos en lugar de todos de ellos.

En JDK 1.0 era necesario tener al menos un método abstracto en una clase abstracta. Esta restricción se eliminó en JDK 1.1 (1997? (Soy antiguo)) y tales clases se agregaron a la Biblioteca Java, como java.awt.event.KeyAdapter.

En C ++ necesita al menos una función virtual pura para hacer que una subclase sea necesaria, y al menos una función virtual para agregar RTTI a la clase. Por lo general, tiene sentido usar el destructor.

Nota Al anular los métodos que no son de abstracto, utilizando @Override es una buena idea. No solo le dice al lector información importante sobre lo que el código está intentando hacer, sino que también ve errores comunes donde los errores tipográficos o los tipos de parámetros incorrectos previenen la anulación.

No, puede declarar un resumen de clase sin tener ningún método abstracto. Puede que no tenga ningún sentido conceptualmente para que exista una instancia de esa clase, o puede asegurarse de que solo las subclases de esa clase puedan ser instanciadas (por cualquier razón)

Si una clase tiene un abstract modificador en su declaración se convierte en abstract clase.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top