资讯专栏INFORMATION COLUMN

java继承的一个小问题

netScorpion / 1911人阅读

摘要:需求如下原来有个类,其中的每个方法实现都返回该类本身。这样就支持链式调用现在有一个新的类想要继承类的全部方法,同时新增一些方法,如下。但是无奈类每个返回的是类,因此,这样声明报错将对象指向,但中没有方法,因此出错。

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

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); //错误

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70441.html

相关文章

  • 吃透这套Java面试题,拿offer成功率再翻一番

    摘要:语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。有针对不同系统的特定实现,,,目的是使用相同的字节码,它们都会给出相同的结果。 showImg(https://segmentfault.com/img/bVbsjCK?w=800&h=450); 一、面向对象和面向过程的区别 面向过程优点: 性能比面向对象高,因为类调用时需要实...

    elva 评论0 收藏0
  • Java编程中那些再熟悉不过知识点(持续更新)

    摘要:语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。有针对不同系统的特定实现,,,目的是使用相同的字节码,它们都会给出相同的结果。项目主要基于捐赠的源代码。 本文来自于我的慕课网手记:Java编程中那些再熟悉不过的知识点,转载请保留链接 ;) 1. 面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高。因为类调用时需要实例...

    taowen 评论0 收藏0
  • 阿里 Java 手册系列教程:为啥强制子类、父类变量名不同?

    摘要:所以看出和两个的对应指针数一样,一个为一个为这就引出了变量的知识点,如手工画的图二为啥强制子类父类变量名不同阿里巴巴手册是这样写的强制避免在子父类的成员变量之间或者不同代码块的局部变量之间采用完全相同的命名方式,那会导致代码可读性降低。 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 目录 父子...

    XGBCCC 评论0 收藏0
  • JAVA刷题(持续更新)

    摘要:年期间微软公司发布,无论是技术实现上还是目标用户都与有很多相近之处,给带来了很多讨论比较和竞争对的发展进程影响很大。年月日大会上,公司宣布最终会将开源。及其他与公司争夺的控制权,令从跨平台技术变为绑定在上的技术是微软公司的主要目的。 一、基础 面向对象 面向对象概念 面向对象(Object Oriented,OO)是软件开发方法 对象:万物皆对象,对象可以是具体的事物,也可以是抽象...

    cyixlq 评论0 收藏0
  • 超详细Java面试题总结(一)之Java基础知识篇

    摘要:最近在备战面试的过程中,整理一下面试题。成员变量如果没有被赋初值,则会自动以类型的默认值而赋值一种情况例外被修饰但没有被修饰的成员变量必须显示地赋值而局部变量则不会自动赋值。   最近在备战面试的过程中,整理一下面试题。大多数题目都是自己手敲的,网上也有很多这样的总结。自己感觉总是很乱,所以花了很久把自己觉得重要的东西总结了一下。 面向对象和面向过程的区别 面向过程:  优点:性能比面...

    vpants 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<