在JAVA中使用接口引用实现类有什么好处?
好处:多态,便于二次开发
参考
http://www.oschina.net/question/270446_81756
c层里调用m层里一个返回ArrayList的方法getXXOO,这个返回ArrayList的方法
ArrayList list = m.getXXOO();
当m层里这个getXXOO需要扩展或变化时 返回了LinkedList
c层里就得跟着修改 为 LinkedList list = m.getXXOO();
如果 m层里的getXXOO() 返回的是个List 不管内部如何变化 c层里的代码无需修改---
相关推荐
- Java基础 1.java的类型 2.String能被继承吗?为什么? 3.String, Stringbuffer, StringBuilder 的区别。 4.ArrayList 和 LinkedList 有什么区别。 5.讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当 new 的时候, 他们的执行顺序。 6.6.用过哪些 Map 类,都有什么区别,HashMap 是线程安全的吗,并发下使用的 Map 是什么,他们内部原理分别是什么,比如存储方式, hashcode,扩容, 默认容量等。 7.有没有有顺序的 Map 实现类, 如果有, 他们是怎么保证有序的。 8.抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。 10.反射的原理,反射创建类实例的三种方式是什么 11描述动态代理的几种实现方式,分别说出相应的优缺点。 11.final 的用途 12.谈谈访问修饰符 public、private、protected、def
- 面试题汇总 1.面向对象和面向过程的区别 2.Java的四个基本特性(抽象、封装、继承,多态) 3.重载和重写的区别 4.构造器Constructor是否可被override 5.访问控制符public,protected,private,以及默认的区别 7.String和StringBuffer、StringBuilder的区别 8.hashCode和equals方法的关系 9.抽象类和接口的区别 10.自动装箱与拆箱 11.什么是泛型、为什么要使用以及泛型擦除 12.Java中的集合类及关系图 13.HashMap实现原理 14.HashTable实现原理 15.HashMap和HashTable区别 16.ArrayList和vector区别 17.ArrayList和LinkedList区别及使用场景 18.Collection和Collections的区别 19.Concurrenthashmap实现原理 20.Error、Exception区别 21.Unchecked 22.Java
- 在JAVA中使用接口引用实现类有什么好处?
- Java枚举的小知识点 用法1 常量 用法2 switch jdk1.6之前只支持int,char,enum类型,使用enum,提高代码可读性 用法3 向枚举类中添加新方法 如果打算自己定义方法,必须在enum实例序列最后添加一个分号,而且必须先定义enum实例。 用法4 覆盖枚举的方法 用法5 实现接口 所有枚举都继承自java.lang.Enum类,java类单继承,接口多继承,枚举对象可以实现多个接口。 用法6 使用接口组织枚举 用法7 单例模式 由于枚举的构造默认是私有的,而且编译器jvm不允许使用反射机制创建枚举实例,因此使用枚举创建单例是非常安全,但是占用内存较大 源码分析理解为什么枚举可以创建单例模式
- spring之BeanFactory BeanFactory spring的IOC容器能够帮我们自动new对象,对象交给spring管之后我们不用自己手动去new对象了。那么它的原理是什么呢?是怎么实现的呢?下面我来简单的模拟一下spring的机制,相信看完之后就会对spring的原理有一定的了解。spring使用BeanFactory来实例化、配置和管理对象,但是它只是一个接口,里面有一个getBean()方法。我们一般都不直接用BeanFactory,而是用它的实现类ApplicationContext,这个类会自动解析我们配置的applicationContext.xml,然后根据我们配置的bean来new对象,将new好的对象放进一个Map中,键就是我们bean的id,值就是new的对象。 BeanFactory 管理 Bean(组件)的生命周期 Bean 的定义
- 在java中String类为什么要设计成final? 1. 什么是不可变? 2. String为什么不可变? 3. 不可变有什么好处?
- 巨评-OO之接口-DAO模式代码阅读及应用. 1.1. StudenDaoListImpl.java与StudentDaoArrayImpl.java有何不同? 2.StudentDao.java文件是干什么用的?为什么里面什么实现代码都没有? 3.使用搜索引擎搜索“Java DAO”,选出几句你能看懂的、对你最有启发的话。请结合接口知识去理解。 4.尝试运行Test.java。根据注释修改相应代码。结合参考代码回答使用DAO模式有什么好处? 5.可选:编写一些使用DAO模式的代码。比如使用文件作为购物车存储底层
- 六年面试经验来分享JAVA基础面试题 1.面向对象和面向过程的区别 2.Java语言有哪些特点 3.关于JVMJDK和JRE最详细通俗的解答 JVM 4.OracleJDK和OpenJDK的对比 5.Java和C++的区别 6.什么是Java程序的主类应用程序和小程序的主类有何不同 7. Java 应用程序与小程序之间有那些差别 8. 字符型常量和字符串常量的区别 9. 构造器 Constructor 是否可被 override 10. 重载和重写的区别 11. Java 面向对象编程三大特性: 封装 继承 多态 12. String StringBuffer 和 StringBuilder 的区别是什么 String 为什么是不可变的 13. 自动装箱与拆箱 14. 在一个静态方法内调用一个非静态成员为什么是非法的 15. 在 Java 中定义一个不做事且没有参数的构造方法的作用 16. import java 和 javax 有什么区别 17. 接口和抽象类的区别是什么 18. 成员变量与
- java面试题整合(持续更新) Redis是如何实现list存储的 SpringMVC的优势、基本原理以及大概的流程 JSP和servlet 的区别 Java中是 怎么解析xml的 MySQL数据库的索引有哪几种?有什么区别? class.forName是什么意思 几种造线程池的方法,区别 ? 面向服务通过什么样的方式实现? 消息中间件 acitveMQ 的作用、原理?几种模式,每种的特点及使用问题?MQ 发送消息失败怎么办? Tomcat 集群中怎么实现共享 在数据库怎么复制表数据和表结构? From表单提交的方法、属性,数据量大的时候用什么方法提交? 服务器宕机如何处理?全部宕机如何处理? java多线程有几种实现方法?都是什么?它们的区别? JDO是 什么?说说你 对JDO的 理解 如何在Jsp中把div或table隐藏起来? TCP和UDP的区别? Servelet在多个请求时存在线程安全问题,请讲一下在servelet编程中要注意什么问题? Quartz怎么配置啊? 服务器集群和ses
- 微信公众平台java开发具体解释(project代码+解析) 1.1 在登录微信官方平台之后,开启开发人员模式,此时须要我们填写url和token,所谓url就是我们自己server的接口,用WechatServlet.java来实现,相关解释已经在凝视中说明,代码例如以下: 1.2 对应的web.xml配置信息例如以下,在生成WechatServlet.java的同一时候,可自己主动生成web.xml中的配置。前面所提到的url处能够填写比如:http;//server地址/项目名/wechat.do 1.3 通过以上代码,我们已经实现了微信公众平台开发的框架,即开通开发人员模式并成功接入、接收消息和发送消息这三个步骤。 2.2 解析接收到的xml数据,此处有两个类,ReceiveXmlEntity.java和ReceiveXmlProcess.java,通过反射的机制动态调用实体类中的set方法,能够避免非常多反复的推断,提高代码效率,代码例如以下: 2.3 调用图灵机器人api接口,获取
- Golang之接口(interface)
- 办公中遇见的那些问题