Sytuacja jest chcę dziedziczyć obiekt mieć czystsze interfejsu Konstruktor:Dziedziczenie klasy z argumentów konstruktora w 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
}
}
Ale aby to zrobić muszę robić rzeczy przed konstruktora jak w przykładzie powyżej, ale nie może, ponieważ Java nie pozwala na to. Czy jest jakiś sposób obejścia tego? Zaczynam czuć, że jeśli twoja klasa ma być poddana subklasie, powinna zawsze implementować domyślny konstruktor i zapewniać settery dla wartości, których potrzebuje ... Czasami możesz uciec, jeśli utworzysz nowy obiekt prosto do super konstruktora jako argument, ale jeśli potrzebujesz odniesienia do obiektu, który utworzyłeś, to jesteś hosed.
Jaki jest błąd kompilacji? –
nie może odwoływać się do obiektu podrzędnego przed nadtypem konstruktora o nazwie – palto
* Nie można odwoływać się do obiektu podrzędnego instancji podczas jawnego wywoływania konstruktora * –