需求以下:
原来有个类,其中的每一个方法实现都返回该类自己。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); //错误