简单的说也就是能兼容更多的类型,改动的时候更方便比如,需求改成要用LinkedList ,就只要改一处
解决方案 »
- jtds-1.2 连接sql server 2000,实现多次插入后,继续插入出现空指针错误,何故?如何解决?
- Apache HTTP Server是否可以搭建jsp的动态网站程序啊?
- ASP问题,asp出现故障,只有在这里发了。 初学者的问题!~!~<
- JSP中如果取得客户端浏览器当前使用的分辨率,使用的语言
- 有什么编JSP工具可以快捷写<% %>
- 旋转裸体美女100分再问关于JFreeChart的配置问题!
- HttpClient问题
- 表单提交大文本问题!
- 初学JSP,有问题问大家啊!HELP:)
- cas-server部署,tomcat启动超时,程序运行没问题
- tomcat6.x被访问 内存使用率100%的问题
- 此课题为了解决软件开发中的业务更改繁琐的问题(java)
接口也不是什么都好的,一般在开发的时候接口是不会随便改动的,因为接口的改动就意味着要变动它的所有实现类.
实际应用中,接口中是对外公开的模块的业务方法,而且接口的命名更符合我们对接口(具体实物)的理解,比如USB接口,我们在理解的时候可以以一个实物的方式来理解.
另外,JVM在加载接口的时候,对接口的空间分配(堆与栈梆定)与类是不一样的.这也就是为什么JAVA里没有类之间的多继承,而是用接口来实现一个多继承的模拟.
不知道楼主有没有明白一点.
简单点讲就是,我要做什么,你能做到就OK,其它我不关心,真正体现了OO的精髓---抽象
List list=new ArrayList();
是让ArrayList向上转型,但是实际是怎么回事?//实际因为ArrayList满足List的功能要求
其他的面向接口编程的和这个我估计是相同的,不知道哪位高手能指点一下?//看下依赖注入的接口注入
你提的问题叫"泛型"List 是ArryList 的父类,比如:ArrayList array1=new ArrayList();
List array2=new ArrayList();List类中有方法A而ArrayList中没有,那样的话,
array1就不能调用A方法,但是array2可以。
明白??
List list = new ArrayList();
这样定义的好外是list 的类型是List,而不是ArrayList,我们调用的都是List中的方法,而不是ArrayList中的。有朝一日如果为了效率之类的改进需要改变ArrayList到LinkedList的话,不需要重新定义,而LinkedList也拥有List的方法,这样就不需要改变现有代码,至少有改动也会非常少。