外星人源码论坛 首页 编程经验 java继承的一个小问题

java继承的一个小问题

2018-3-5 06:54
原作者: 外星人源码网 来自: 外星人源码网 收藏 分享 邀请

需求如下:原来有个类,其中的每个方法实现都返回该类本身。 public class AClass {private String str="";public AClass addString(String str) {this.str = str;return this;}public String ...

需求如下:
原来有个类,其中的每个方法实现都返回该类本身。

public class AClass {
    private String str="";
    
    public AClass addString(String str) {
        this.str = str;
        return this;
    }
    
    public String getString() {
        return str;
    }
}

这样就支持链式调用

AClass a = new AClass();
a.addString().addXXX().addYYY()

现在有一个新的类B想要继承A类的全部方法,同时新增一些方法,如下。

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");

但这么一来就对链式调用的支持很微妙,即:

BClass b = new BClass();
b.addInt(3).addString("test"); //正确
b.addString("test").addInt(3); //错误

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

粉丝 阅读97 回复0
上一篇:
使用 docker 搭建 web 服务环境发布时间:2018-03-05
下一篇:
Median of Two Sorted Arrays发布时间:2018-03-05
推荐资讯
阅读排行
国内最专业的源码技术交流社区
全国免费热线电话

0373-5171417

周一至周日9:00-23:00

反馈建议

admin@eenot.com 在线QQ咨询

扫描二维码关注我们