这一节4分50秒的位置,用了接口,但没有说明未来如何方便维护和扩展功能,能简单说明一下吗?

这一节4分50秒的位置,用了接口,但没有说明未来如何方便维护和扩展功能,能简单说明一下吗?

如题,我的java基础还不够扎实,所以想不到它是如何做到方便维护和拓展的。

希望能简单说明一下原理。


另一个小疑惑,虽然大概知道8分10秒处注入的是接口,后是通过Spring完成的同名实例化,实现的接口名.方法的实例方法的调用,但是联想到了一个开发上的设想:

    就是,有没有可能实现类似——声明一个父类,这个父类有ABCD种子类,但是子类的方法各不相同,却能够直接通过父类调用任意子类的方法——这种方案?

    就假如,F是“父类”(未必是父类,不知道是什么东西),然后我想用F.a/F.b/F.c/F.d 的语法实现调用A、B、C、D里的方法(a、b、c、d)的这种解决方案。(就相当于我想扩展F的功能,不修改F,直接增加一个E,然后就可以 F.e 这样用新增的方法)

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,1、比如:项目需要做一个订单模块,首先领导创建了一个订单的接口(定义了规范),然后把该接口具体怎么实现交给了小a来做,小a开始进行实现类的编写(接口的第一个实现类),但是过了很久以后,领导觉得小a写的这个实现类不太满意,想找人重新写订单模块。

    那么此时,接口的可扩展性就体现了出来,领导找到了小b,而小b只需要根据该接口重新创建一个类(接口的第二个实现类),并将该订单接口定义的所有方法重新实现一遍,就达到了重写订单模块的目的。而项目其他部分对订单模块的引用并不受到影响,因为其他模块对订单模块引用的是“接口”,而不是具体的实现类。

2、使用接口与父类就可以实现同学描述的场景,通过接口、父类的对象调用实现类实例。具体同学可复习Java继承上、下(https://class.imooc.com/course/2061  )与Java多态上、下(https://class.imooc.com/course/2065  )

祝学习愉快!

  • 宝慕林5570576 提问者 #1

    感谢耐心解答~!总算是明白接口实在的存在意义了。

    我回顾了一下接口和父类,还是没能想出如何实现我之前后面描述的那种可能性.....

    我是想把F写在一个文件里,然后分别把ABCD写在不同的文件里,这样在增加E之后,不修改F,却能通过F调用E。

    如果F是接口的话,实现不了,因为不能实例化接口。虽然可以把ABCDE作为接口给F做为类,但是这样和目的不符,反了。(因为目的是不修改F,同时将E作为F的扩展)

    如果用继承的话,我想到了向上转型,但是,向上转型无法调用子类独有的方法,所以也不行。

    如果用向下转型,虽然可以间接地使用ABCDE各自的方法,但是想要用这5个类里面的方法就要分别new五个实例,再对这五个实例分别做向上转型才可以。

    实在是想不到该怎么实现......

    2021-11-26 08:52:44
  • 好帮手慕小脸 回复 提问者 宝慕林5570576 #2

    同学你好,这里同学可以考虑向上转型,其次同学考虑的子类独有的方法想被调用,这里可以将父类引用强制转换成子类(向下),参考代码如下所示:

    https://img1.sycdn.imooc.com//climg/61a0518b09eeecc908890922.jpg

    祝学习愉快~

    2021-11-26 11:17:21
  • 宝慕林5570576 提问者 回复 好帮手慕小脸 #3

    感谢回复!还特意做了个演示和截图,真的辛苦了......


    我知道是可以向下转型做到这一点的,但是就想我之前的回复里面提到的:

    虽然可以间接地使用ABCDE各自的方法,但是想要用这5个类里面的方法就要分别new五个实例,再对这五个实例分别做向上转型才可以。

    想要用A里面的方法需要new一个A的F再转型,想要用B里面的方法就需要另外再new一个B的F再转型,以此类推,这样太麻烦了,没有可以实现直接通过一个F,调用有子类方法的实现方式吗?还是说Java这个语言就是不支持这种模式的?(甚至无法实现这种模式的?)

    2021-11-26 11:40:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师