Tengo un poco de código Java simple que tiene una apariencia similar a esto en su estructura:de error de Java: super constructor implícito no está definida para constructor por defecto
abstract public class BaseClass {
String someString;
public BaseClass(String someString) {
this.someString = someString;
}
abstract public String getName();
}
public class ACSubClass extends BaseClass {
public ASubClass(String someString) {
super(someString);
}
public String getName() {
return "name value for ASubClass";
}
}
voy a tener un buen número de subclases de BaseClass
, la implementación de cada uno de la getName()
método de su propia manera (template method pattern).
Esto funciona bien, pero no me gusta tener el constructor redundante en las subclases. Es más para escribir y es difícil de mantener. Si tuviera que cambiar la firma del método del constructor BaseClass
, tendría que cambiar todas las subclases.
Cuando quito el constructor de las subclases, me sale este error en tiempo de compilación:
Implicit super constructor BaseClass() is undefined for default constructor. Must define an explicit constructor
es lo que estoy tratando de hacer posible?
¡Por favor, deje el constructor 'redundante'! Mantiene la legibilidad de su código y todos los IDEs modernos pueden crearlo automáticamente, por lo que solo tiene que marcar un atajo. –
Releyendo mi propia pregunta un año después y se me ocurre que podría haber eliminado los constructores (incluidos en la clase base) como se sugirió matt b, y luego usar un método de fábrica estático para crear instancias. – Joel