zoukankan      html  css  js  c++  java
  • java 面向接口编程的理解

    初学者可能在学习中会有很多疑惑,为什么要这样,明明可以那样实现,这样做的好处又是什么?

    可能会的人觉得很简单很容易理解,甚至可能觉得问的问题很智障,但对于小白来说可能是苦思冥想都不得其解的。

    自己身为初学者也深知初学者的不易,很多问题网上没有很明确的答案。

    自己遇到什么问题想出来后就写下,也为了便于后来人,毕竟前人种树后人乘凉。

    初看容器时,有很多疑问,为什么都用接口作为类型去实现?(List<lnteger> l = new ArrayList<>())

    而不直接这样写?(ArrayList <Integer> i = new ArrayList<>())

    我说一下我这个初学者的理解,如有错误之处还望指出,不胜感谢!

    这时就可以把A接口看做是一种要完成的A功能的规范,实现它的A1类是完成A功能的一种方法,A2类也是完成A功能的一种方法。

    然后再我们需要实现A功能时,我们需要根据具体情况的不同,采用不同的方法去实现这个功能。

    这个思想更符合我们日常面向对象的思想,先想需要完成什么功能,再想怎么完成这个功能(根据当前情况选择合适的方法去完成)。

     

    例如我这里需要存储有序的数据,那我们先想如何实现这个功能,当然是List接口。

    然后根据我当前的具体情况再想,List接口下那个类更适合当前情况。

    是数组(ArrayList),还是链表(LinkedList)方式存储?

    这需要结合这两种存放方式的优缺点和当前具体需求去决定。

    举个更加通俗的例子:

    假如我定义一个接口的功能是去图书馆,我再定义几个实现该接口的

    有教学楼到去图书馆的,有食堂去图书馆的,还有寝室去图书馆的

    然后我们思考时是先想做什么?去图书馆,这就确定了接口去图书馆接口

    然后我们再想怎么去,由于各个人的所在位置的不同,我们就需要根据当前所在位置的具体情况

    去调用合适的,我在寝室就用寝室去图书馆的,我在食堂就调用食堂去图书馆的

    假如学校扩大了,多了几个分校区。去图书馆这个接口我们不需要改动。

    只需要添加一个实现了(去图书馆接口)的(分校区去图书馆的类)就可以了。(类实现接口)

    这样一个具体的功能确定了,即使后来有新的情况需要完成这个功能,我们只需要添加新的类就可以了。

    因为功能的确立基本是不变的,是具有普适性的。

    接口是一个抽象的广泛的概念,更像是一种宏观上的东西。

    先确定好宏观层面的东西(接口),然后再想微观上具体如何实现(实现该接口的类),后续有新的微观可以直接加入,因为这个微观也是从属于这个宏观的。

  • 相关阅读:
    Device eth0 does not seem to be present, delaying initialization(解决克隆CentOS6.3虚拟机后网卡设备无法启动问题)
    CI整合Smarty
    修改crontab默认的编辑器
    添加数据之后不跳页面显示一个漂亮的提示信息(非ajax提交数据)
    jsp连接mysql数据库
    PHP使用CURL详解
    内、外部号码范围配置
    更改SAP的字段翻译
    SAP 应用服务负载均衡的实现
    SAP中禁止特定用户更改密码
  • 原文地址:https://www.cnblogs.com/huang-changfan/p/9613971.html
Copyright © 2011-2022 走看看