¿Por qué las clases de Java no pueden tener campos abstractos como pueden tener métodos abstractos?
Por ejemplo: tengo dos clases que extienden la misma clase base abstracta. Cada una de estas dos clases tiene un método que es idéntico excepto por una constante String, que resulta ser un mensaje de error, dentro de ellas. Si los campos pudieran ser abstractos, podría hacer este resumen constante y llevar el método a la clase base. En su lugar, tengo que crear un método abstracto, llamado getErrMsg()
en este caso, que devuelve el String, anular este método en las dos clases derivadas, y luego puedo abrir el método (que ahora llama al método abstracto).
¿Por qué no podía hacer que el campo fuera abstracto para empezar? ¿Podría haber sido diseñado Java para permitir esto?