Проблема не в том, что вы обращаетесь к переменной, а в том, что вы не вызываете базовый конструктор:
class Super {
protected int a;
protected Super(int a) { this.a = a; }
}
class Sub extends Super {
public Sub(int a) { super(a); }
public Sub() {
super(0); // <-- call base constructor
this.a = 5;
}
}
Это происходит потому, что вы не определили конструктор по умолчанию для Super
,поэтому производные классы не знают, какой конструктор вызывать, если вы его не указали.