java 面向接口编程的理解
初学者可能在学习中会有很多疑惑,为什么要这样,明明可以那样实现,这样做的好处又是什么?
可能会的人觉得很简单很容易理解,甚至可能觉得问的问题很智障,但对于小白来说可能是苦思冥想都不得其解的。
自己身为初学者也深知初学者的不易,很多问题网上没有很明确的答案。
自己遇到什么问题想出来后就写下,也为了便于后来人,毕竟前人种树后人乘凉。
初看容器时,有很多疑问,为什么都用接口作为类型去实现?(List<lnteger> l = new ArrayList<>())
而不直接这样写?(ArrayList <Integer> i = new ArrayList<>())
我说一下我这个初学者的理解,如有错误之处还望指出,不胜感谢!
这时就可以把A接口看做是一种要完成的A功能的规范,实现它的A1类是完成A功能的一种方法,A2类也是完成A功能的一种方法。
然后再我们需要实现A功能时,我们需要根据具体情况的不同,采用不同的方法去实现这个功能。
这个思想更符合我们日常面向对象的思想,先想需要完成什么功能,再想怎么完成这个功能(根据当前情况选择合适的方法去完成)。
例如我这里需要存储有序的数据,那我们先想如何实现这个功能,当然是List接口。
然后根据我当前的具体情况再想,List接口下那个类更适合当前情况。
是数组(ArrayList),还是链表(LinkedList)方式存储?
这需要结合这两种存放方式的优缺点和当前具体需求去决定。
举个更加通俗的例子:
假如我定义一个接口的功能是去图书馆,我再定义几个实现该接口的类,
有教学楼到去图书馆的类,有食堂去图书馆的类,还有寝室去图书馆的类。
然后我们思考时是先想做什么?去图书馆,这就确定了接口是去图书馆的接口。
然后我们再想怎么去,由于各个人的所在位置的不同,我们就需要根据当前所在位置的具体情况
去调用合适的类,我在寝室就用寝室去图书馆的类,我在食堂就调用食堂去图书馆的类。
假如学校扩大了,多了几个分校区。去图书馆这个接口我们不需要改动。
只需要添加一个实现了(去图书馆接口)的(分校区去图书馆的类)就可以了。(类实现接口)
这样一个具体的功能确定了,即使后来有新的情况需要完成这个功能,我们只需要添加新的类就可以了。
因为功能的确立基本是不变的,是具有普适性的。
接口是一个抽象的广泛的概念,更像是一种宏观上的东西。
先确定好宏观层面的东西(接口),然后再想微观上具体如何实现(实现该接口的类),后续有新的微观可以直接加入,因为这个微观也是从属于这个宏观的。
java 面向接口编程的理解的更多相关文章
- Java面向接口编程【精品博客】
我们从生活中去理解面向接口编程,以下举例四个案例来理解: 案例一(汽车案例): /** * 汽车标准接口 * @author Liudeli */ public interface ICar { /* ...
- 面向接口编程详解-Java篇
相信看到这篇文字的人已经不需要了解什么是接口了,我就不再过多的做介绍了,直接步入正题,接口测试如何编写.那么在这一篇里,我们用一个例子,让各位对这个重要的编程思想有个直观的印象.为充分考虑到初学者,所 ...
- Java基础-面向接口编程-JDBC详解
Java基础-面向接口编程-JDBC详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.JDBC概念和数据库驱动程序 JDBC(Java Data Base Connectiv ...
- Java反射(六)纯面向接口编程的简单框架实践
我们知道在使用MyBatis开发时,只需要添加DAO接口和对应的映射XML文件,不需要写DAO的实现类,其实底层是通过动态代理实现. 本文将使用前几篇文章的知识点实现一个纯面向接口编程的简单框架,与M ...
- 编写Java程序,使用面向接口编程模拟不同动物的吼叫声
返回本章节 返回作业目录 需求说明: 使用面向接口编程模拟不同动物的吼叫声 实现思路: 使用面向接口编程模拟不同动物吼叫声的实现思路: 定义发声接口Voice,在其中定义抽象吼叫方法sing(). 分 ...
- C#面向接口编程详解(1)——思想基础
我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到 ...
- 设计与实现分离——面向接口编程(OO博客第三弹)
如果说继承是面向对象程序设计中承前启后的特质,那么接口就是海纳百川的体现了.它们都是对数据和行为的抽象,都是对性质和关系的概括.只不过前者是纵向角度,而后者是横向角度罢了.今天呢,我想从设计+语法角度 ...
- java基础强化——深入理解java注解(附简单ORM功能实现)
目录 1.什么是注解 2. 注解的结构以及如何在运行时读取注解 2.1 注解的组成 2.2 注解的类层级结构 2.3 如何在运行时获得注解信息 3.几种元注解介绍 3.1 @Retention 3.2 ...
- C#进阶系列——MEF实现设计上的“松耦合”(终结篇:面向接口编程)
序:忙碌多事的八月带着些许的倦意早已步入尾声,金秋九月承载着抗战胜利70周年的喜庆扑面而来.没来得及任何准备,似乎也不需要任何准备,因为生活不需要太多将来时.每天忙着上班.加班.白加班,忘了去愤,忘了 ...
随机推荐
- HDU1272:小希的迷宫(并查集)
小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- PAT团体程序设计大赛---(模拟)
L1-1 古风排版(20 分) 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数.第二行 ...
- 关于CRC循环冗余校验的总结(C#)
1. 实验要求 (1)通过CRC(循环冗余校对)序列的计算,掌握C#语言中类的静态方法与动态方法的区别. (2)Shell与Windows Form 的通信作为扩展提高内容. 2. 实验内容 主要工 ...
- 我喜欢的4个VS扩展吧
原文发布时间为:2011-06-09 -- 来源于本人的百度文章 [由搬家工具导入]
- CentOS 7 主机加固手册-上
TIPs: 世界上有一撮人专门研究主机安全加固基线,有兴趣的读者可以到 http://benchmarks.cisecurity.org/ 获取更加详细专业的主机安全基线配置文档.或者到 https: ...
- onvif实现
前言 负责开发了公司的onvif,一个人从0开始写的,花了两个月 !!!下面是我的总结. onvif介绍 ONVIF[Open Network Video Interface Forum](开放型网络 ...
- C++ 迭代器容器学习
set的一个用法 . difference找差集 union合并set intersection找到交集 #include<iostream> #include<string> ...
- .NET DataSet DataTable 导出excel
public void CreateExcel(DataSet ds, string FileName) { HttpResponse resp; resp = Page.Response; resp ...
- (3)webApi postman使用
https://www.getpostman.com/
- HDU3414 Tour Route(竞赛图寻找哈密顿回路)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=3414 本文链接:http://www.cnblogs.com/Ash-ly/p/5459540.html ...