Java中子類在實例化的時候調用父類的無參構造方法容易混淆的大致分以下幾種情況:
1、子類和父類同時具有有參和無參的構造方法,子類有參構造方法中第一行寫的有super.(xx),且子類實例化時用的是有參構造方法,那么此時不會先調用父類的無參構造方法,而是直接調用子類的有參構造方法;
2、子類和父類同時具有有參和無參的構造方法,子類有參構造方法中第一行寫的沒有super.(xx),且子類實例化時用的是有參構造方法,那么此時會先調用父類的無參構造方法,再調用子類的有參構造方法;
3、子類和父類同時具有有參和無參的構造方法,子類無參構造方法中第一行寫的有super.(),且子類實例化時用的是無參構造方法,那么此時直接調用子類的有參構造方法;
4、子類和父類同時具有有參和無參的構造方法,子類無參構造方法中第一行寫的沒有super.(),且子類實例化時用的是無參構造方法,那么此時會先調用父類的無參構造方法,再調用子類的有參構造方法;
5、父類具有有參和無參的構造方法,但子類只有有參或者無參構造方法且第一行寫的沒有super.,那么子類實例化時會先調用父類的無參構造方法,再調用子類的有參構造方法;
6、父類具有有參和無參的構造方法,但子類只有有參或者無參構造方法且第一行寫的有super.,那么子類實例化時直接調用子類的有參構造方法;
7、假如父類只有有參構造方法,子類也只有有參構造方法,那么子類的有參構造方法中必須寫super.xx,不然編譯會不通過。