java继承的一个小问题

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