需求以下:
原來有個類,其中的每一個方法實現都返回該類自己。java
public class AClass { private String str=""; public AClass addString(String str) { this.str = str; return this; } public String getString() { return str; } }
這樣就支持鏈式調用:this
AClass a = new AClass(); a.addString().addXXX().addYYY()
如今有一個新的類B想要繼承A類的所有方法,同時新增一些方法,以下。code
public class BClass extends AClass { private int num = 0; public BClass addInt(int num) { this.num = num; return this; } public int getInt() { return num; } }
可是無奈類A每一個返回的是A類,所以,這樣聲明:對象
AClass b = new BClass(); b.addInt(3); //報錯 b.addString("test");
將B對象指向A,但A中沒有addInt()
方法,所以出錯。應該改成:繼承
BClass b = new BClass(); b.addInt(3); b.addString("test");
但這麼一來就對鏈式調用的支持很微妙,即:get
BClass b = new BClass(); b.addInt(3).addString("test"); //正確 b.addString("test").addInt(3); //錯誤