[code=java]??? public class test1 { ????????? static class a {??????????? int x = 999;??????????? int y = 999;??????????? {??????????????? System.out.println("a--父類非靜態(tài)方法");??????????? }??????????? static {??????????????? System.out.println("a--父類靜態(tài)方法");??????????? }??????????? public a() {??????????????? System.out.println("a--執(zhí)行a類無參構(gòu)造方法");??????????????? print();??????????? }??????????? public a(int x) {??????????????? System.out.println("a--執(zhí)行父類有參構(gòu)造方法");??????????? }??????????? public void print() {??????????????? System.out.println("a--我是父類的打印方法");??????????? }??????? }??????? static class b extends a {??????????? int x = 1;??????????? int y;??????????? {??????????????? System.out.println("b--子類非靜態(tài)方法");??????????? }??????????? static {??????????????? System.out.println("b--子類靜態(tài)方法");??????????? }??????????? public b() {??????????????? System.out.println("b--執(zhí)行b類無參構(gòu)造方法");??????????????? //y = -1;??????????? }??????????? public b(int x) {??????????????? System.out.println("b--執(zhí)行子類有參構(gòu)造方法");??????????? }??????????? public void print() {??????????????? System.out.println("b--在子類中調(diào)用父類的super方法");??????????????? super.print();??????????????? System.out.println("b--我是子類的打印方法");??????????? }??????? }??????? public static void main(String[] args) {??????????? // TODO Auto-generated method stub??????????? int x = 0;??????????? new b(x);??????????? //a.print();??????? }??? }[/code][img=http://img.bbs.csdn.net/upload/201702/20/1487586057_405102.jpg][/img]為什么創(chuàng)建一個有參數(shù)的子類對象時,一定要調(diào)用到父類的無參數(shù)構(gòu)造方法?當(dāng)我把父類的無參數(shù)構(gòu)造方法去掉時,編譯器會報錯,除了添加父類無參數(shù)構(gòu)造方法解決,好像還可以用super這個解決,怎么解決?
4 回答

慕桂英3389331
TA貢獻(xiàn)2036條經(jīng)驗 獲得超8個贊
你好,這個除了增加父類無參構(gòu)造方法外,可以增加父類的有參數(shù)構(gòu)造方法然后用super(加參數(shù))調(diào)用,因為 在子類初始化的時候 子類的無參構(gòu)造方法都會隱含著一個super()就是調(diào)用了父類的構(gòu)造器。子類必須調(diào)用父類其中一個構(gòu)造器。初始化父類
添加回答
舉報
0/150
提交
取消