Tengo que crear muchas clases muy similares que tienen un solo método diferente entre ellas. Así que pensé que crear una clase abstracta sería una buena forma de lograr esto. Pero el método que quiero anular (por ejemplo, el método foo()) no tiene un comportamiento predeterminado. No quiero mantener ninguna implementación predeterminada, obligando a todas las clases extendidas a implementar este método. ¿Cómo hago esto?Cómo forzar a un método a ser anulado en Java?
Respuesta
Es necesario un método abstracto en su clase base:
public abstract class BaseClass {
public abstract void foo();
}
De esta manera, no se especifica un comportamiento predeterminado y se fuerza clases no abstractos heredando de BaseClass
para especificar una implementación para foo
.
su clase base' BaseClass' ** debe ** ser abstracta. –
@The Elite Gentleman: ¡sí! ¡Gracias! arregló eso. –
¡ah! Estaba bajo el concepto erróneo de que las clases abstractas no pueden tener métodos no abstractos. ¡Gracias! –
Simplemente haga el método abstracto.
Esto obligará a todas las subclases a implementarlo, incluso si se implementa en una superclase de la clase abstracta.
public abstract void foo();
Gracias por mencionar el escenario de la superclase –
Realice este método abstract
.
Si usted tiene una clase abstracta, a continuación, hacer que su método (digamos que foo
abstracta así)
public abstract void foo();
A continuación, todas las subclases tendrá que anular foo
.
Simplemente defina foo() como un método abstracto en la clase base:
public abstract class Bar {
abstract void foo();
}
Ver The Java™ Tutorials (Interfaces and Inheritance) para más información.
- 1. Llamar a un método anulado, superclase a llamadas reemplazadas método
- 2. Llamar condicionalmente a un método básico anulado en C#
- 3. Cómo llamar a un destino MSBuild anulado
- 4. El método tiene que ser anulado pero no es abstracto
- 5. Sobrecargado y anulado en Java
- 6. ¿Cómo llamar a un método en Java?
- 7. Cómo forzar la llamada a un método derivado de C#
- 8. ¿Puedes forzar a MSI a ser siempre administrador?
- 9. Cómo forzar a la subclase a llamar a un método abstracto implementado
- 10. ¿Qué es este tipo de método anulado llamado en Java?
- 11. Llamando a un método java en jsp
- 12. ¿Cómo forzar a Java a lanzar una excepción aritmética?
- 13. ¿Cómo puedo llamar a un método de clase padre anulado de una clase secundaria?
- 14. ¿Cómo puedo llamar a la 'implementación base' de un método virtual anulado?
- 15. Choque de nombres genéricos de Java, método no correctamente anulado
- 16. Cómo forzar a un componente a crecer en MigLayout en Java
- 17. ¿Puedo forzar al compilador a optimizar un método específico?
- 18. ¿Se puede forzar a un objeto java a implementar una interfaz en tiempo de ejecución?
- 19. Cómo forzar a un applet de Java a cargar desde el caché
- 20. Cómo forzar a eliminar un archivo?
- 21. Cómo llamar a métodos anulado en todas las clases derivadas
- 22. ¿Cómo forzar a un número a estar en un rango en C#?
- 23. ¿Cómo forzar a XPath a usar UTF8?
- 24. Cómo forzar una pieza de texto a ser 'dirección ltr' dentro de un 'dirección rtl' párrafo
- 25. Cómo forzar a Boost a usar rpath?
- 26. ¿Forzar a los constructores de argumento único a ser explícitos en C++?
- 27. MVC: ¿Qué método debe ser anulado al resultado de la acción caché
- 28. ¿Cómo puedo forzar a un ContextMenu a cerrar (proyecto WPF)?
- 29. cómo forzar a un escenario de pepino a fallar?
- 30. ¿Cómo forzar a SciTE a recargar un archivo automáticamente?
Suena como una implementación del Patrón de método de plantilla http://en.wikipedia.org/wiki/Template_method_pattern – Robin
Esta es una excelente pregunta para los casos en los que desea que TODAS las subclases llamen a su padre. Las respuestas hasta ahora parecen no haber considerado ese caso. Ejemplo: asegúrese de que un método debe anularse en cada clase y llamar al padre: '@override protected void importantMethod() {super.importantMethod(); ...} ' – will