[問題] 請問繼承抽象類別時...??

看板java作者 (千里之外)時間14年前 (2011/08/23 23:30), 編輯推噓5(506)
留言11則, 6人參與, 最新討論串1/1
abstract class CShape{ protected String color; public void setColor(String str){ color=str; } } class CRectangle extends CShape{ protected int width,height; public CRectangle(int w, int h){ width=w; height=h; } public void show(){ System.out.print("color="+color); System.out.println(", area="+width*height); } } class CCircle extends CShape{ protected double radius; public CCircle(double r){ radius=r; } public void show(){ System.out.print("color="+color); System.out.println(", area="+3.14*radius*radius); } } public class ex11_4{ public static void main(String[] args){ CRectangle rect = new CRectangle(5,10); //當建立此建構元時,為何不用呼叫父類別(抽象類別的建構元)... //能正確執行...?? rect.setColor("Yellow"); rect.show(); CCircle cir = new CCircle(2.0); cir.setColor("Green"); cir.show(); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.46.120.179

08/23 23:45, , 1F
不清礎所問 但建議CShape rect= new CRectangle(5,10);
08/23 23:45, 1F

08/23 23:53, , 2F
他CShape沒有show() method,改CShape rect就掰了
08/23 23:53, 2F

08/23 23:55, , 3F
是的 沒仔細看
08/23 23:55, 3F

08/23 23:58, , 4F
這code父類別建構元沒東西,不呼叫沒影響,通常呼叫是要初始化
08/23 23:58, 4F

08/24 00:01, , 5F
當執行到CRectangle(int ,int )建構元時...
08/24 00:01, 5F

08/24 00:02, , 6F
沒東西...了解了...謝謝..
08/24 00:02, 6F

08/24 08:53, , 7F
子類別 ctor 之前其實會自動跑父類別的 ctor
08/24 08:53, 7F

08/25 02:33, , 8F
是的,會自動呼叫~
08/25 02:33, 8F

08/25 13:53, , 9F
呼叫的是default, 若有想要呼叫有引數的 還是要explicit
08/25 13:53, 9F

08/25 13:55, , 10F
呼叫父類的ctor
08/25 13:55, 10F

09/06 09:49, , 11F
抽象類別不是不能直接呼叫嗎?
09/06 09:49, 11F
文章代碼(AID): #1EKyUivO (java)