構(gòu)造方法與相同名稱的類和方法的關(guān)系
package?first; public?class?demo5qidong?{ public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub demo5?asd=new?demo5(); asd.asd(); } }
在上面代碼執(zhí)行后,會顯示a和b。
package?first; public?class?demo5?{ public?demo5(){ System.out.println("a"); } void?asd(){ System.out.println("b"); } }
我想知道第二段代碼中外面的demo5類與它內(nèi)部的demo方法的問題,我創(chuàng)建了demo5對象,不是由外面的demo5類得來的嗎?為什么會顯示a?和內(nèi)部的demo5有什么關(guān)系?
2017-05-10
因為 public demo5() 這個是 demo5 類的構(gòu)造方法,每當(dāng)你 new 一個 demo5 對象時,就會調(diào)用對象的構(gòu)造方法來創(chuàng)建并初始化一個對象。new demo5(),調(diào)用的就是構(gòu)造方法。
2017-05-10
第二段代碼中 內(nèi)部的demo5為demo5類的構(gòu)造方法,當(dāng)你new demo5的對象時首先會調(diào)用構(gòu)造方法(如果不聲明構(gòu)造方法。那么構(gòu)造函數(shù)還是會有。默認(rèn)為不參構(gòu)造方法)。當(dāng)你第一段代碼new了demo5對象就執(zhí)行了demo5構(gòu)造方法然后又執(zhí)行了asd()方法
2017-05-10
創(chuàng)建demo5對象時,對對象進(jìn)行實例化,會先調(diào)用類的構(gòu)造方法對它進(jìn)行實例化,所以會打印出來a,然后再調(diào)用asd方法,會打印b.