Proszę spojrzeć na ten kod:Java - rozciąga dlaczego super zmienna a jest 0
class Sup {
int a = 8;
public void printA() {
System.out.println(a);
}
Sup() {
printA();
}
}
public class Sub extends Sup {
int a = 9;
@Override
public void printA() {
System.out.println(a);
}
Sub() {
printA();
}
public static void main(String[] args) {
Sub sub = new Sub();
}
}
wynik: konsola druku: 0 9
wiem, że podklasa najpierw wywołuje nadklasą constructor
ale dlaczego to jest 0 9
, a nie 8 9
?
Czy jesteś pewien, że konstruktor jest wywoływany w kolejności, którą uważasz za? –
@ cricket_007: Oczywiście, że tak. Nie możesz ** unikać wywoływania go w Javie. –
@ T.J.Crowder Możesz tego uniknąć, używając serializacji lub klonowania. – Flown