La situación es que quiero heredar un objeto de tener una interfaz constructor más limpio:La herencia de una clase con argumentos de constructor en Java
class BaseClass {
public BaseClass(SomeObject object){
...
}
}
class SubClass extends BaseClass{
private SubObject subObject = new SubObject();
public SubClass(){
super(new SomeObject(subObject)); // doesn't compile
}
}
Pero para hacer eso tengo que hacer las cosas antes de que el constructor como en el ejemplo arriba pero no puede porque Java no permite eso. ¿Hay alguna forma de evitar esto? Estoy empezando a sentir que si su clase está diseñada para ser subclasificada, siempre debe implementar un constructor predeterminado y proporcionarles los valores que necesita. A veces puede salirse con la suya si crea un nuevo objeto directamente en el superconstructor. como argumento, pero si necesita una referencia al objeto que ha creado, entonces es una manguera.
¿Cuál es el error de compilación que obtienes? –
no se puede hacer referencia a subObject antes de que se haya llamado supertype – palto
* No se puede hacer referencia a un campo de instancia subObject al invocar explícitamente un constructor * –