resueltos metodos metodo interfaces implementacion ejercicios ejemplo clases clase abstractos abstracto abstractas abstracta java abstract-class abstract abstract-methods

java - metodos - ¿Debería una clase abstracta tener al menos un método abstracto?



metodo abstracto ejemplo (5)

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


El tema de este post 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 instanciada, la mejor manera de manejar esto es con un constructor protected private , no marcándolo como abstract .


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

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

Tenga en cuenta que al reemplazar métodos no abstractos, usar @Override es una buena idea. No solo le brinda al lector información importante sobre lo que el código intenta hacer, sino que también detecta errores comunes en los que errores tipográficos o tipos de parámetros incorrectos impiden la anulación.


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


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


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