关于接口的理解问题
java学习的基础书看了1,2遍了。不同的书也看过,基本对java有一定的了解。
对于接口,感觉比较迷茫。
接口也知道书本中写的一些使用接口的规范,也知道接口多线程、接口序列化、接口监听等用到接口。
但还是迷茫,自己写程序,比如一些实用的程序,不知道什么情况下必须用接口~!
对于接口自己使用比较迷茫,估计跟初学,不是太熟练不是太董,有关。只懂得按照书本上,监听程序代码用接口,我也照抄。
所以,想请各位达人帮忙给点接口的范例,多说明为什么必须用接口。或者把接口说得比较深入比较详细的一些文章给我。
谢谢了。
[解决办法]
熟能生巧 再多看看设计模式会好些 在运用中体会
笼统地说
接口是制定标准和规范 should do 实现者之间有了共同的交互面
继承是赋予了某种能力 can do
对于concrete class而言 两者都是Type(Is a)
我们可以说ArrayList是一个List,也可以说是一个Object
[解决办法]
等待高手亲临指导!
[解决办法]
我还是觉得这句话比较经典。
接口是多态的体现~~
[解决办法]
接口只定义了应该做什么,而没有定义该怎么做
所以,如果你的程序只有你一个人完成,且每个功能只有一种实现的方法,我想你可以,注意是可以,不用接口
如果有多人合作,你可能开发的快,可惜你需要的一个类,你的同伴还没有完成,你怎么办?等他吗?
如果是面向接口,你可以自己先写一个最简单的实现来调试你的代码,Spring这时是个好帮手。
如果一个功能有多种实现,比如导出文档。 有的要html的,有的是word/Excel/PPt/PDF 等等。
因为你无法预见他们到底需要什么,这时候,你可以用接口,要求每个实现只需要完成 export 方法就行。
然后你自己做了一个Excel的,以后按需要再完成其他的,而此时,你原来的程序根本不用修改,因为他们调用的是接口,而不是具体的某个实现类。
[解决办法]
这是个老生常谈的问题了,我就不解释了,也怕自己解释不好,
楼主可以去看看设计模式的书,里面大部分都是接口的奇妙用法,
相信看后你会有所收获
[解决办法]
java2000_net说的有道理哦
引用他的原话:
"然后你自己做了一个Excel的,以后按需要再完成其他的,而此时,你原来的程序根本不用修改,因为他们调用的是接口,而不是具体的某个实现类。"
以后怎么再完成呢,只要你编写个word类来继承那个接口就可以了,,是这样吧, java2000_net高手
[解决办法]
顶 老紫竹 回答永远是那么具体
[解决办法]
老紫竹 说的很有道理啊
顶
[解决办法]
java开发过程中,使用接口的好处是:当你调用别人的接口时候,可以不需要重部署,可以直接使用。而继承就不可以,必须要重新部署才能使用。
[解决办法]
http://topic.csdn.net/u/20071229/20/50c600d9-8369-4c75-a53b-73249696082b.html
[解决办法]
把这些文章都看懂了,面向对象就有小成了。
http://blog.csdn.net/Slugfest/archive/2008/01/10/2034359.aspx
[解决办法]
这个不好说,等你写的程序多了,你自然会明白的,每个人都是这样的,就跟我大学时候看设计模式一样,一头迷茫,几年过来了,也就都豁然开朗了。别迷茫,这个是慢慢的一个过程。抽象的东西
[解决办法]
接口是一种服务的约定,一般说明这个服务需什么样的数据,会提供怎样的数据处理,会返回什么数据.例如我们约定炉这个接口,其输入数据就是物体,它提供加热物体的处理,不返回东西.而我们现实中的电磁炉,煤炉就是炉的实现类.对象么,你们家实际用的炉子就是一个对象.
[解决办法]
老紫竹说的很好,学习了
[解决办法]
还有,java是单继承的,所以如果想继承自己写的更多的类的时候,肯定不能写成extends class1 class2 class3...
这个时候你需要继承多个接口,例如implements interface1 interface2,而这样做的目的就在于,能够继承多个实现对应于每一个接口的“实现类”。
并且方法中的参数也可以定义为接口类型,这样在传递参数的时候也可以转换成具体的类,这样的程序设计比较灵活。
我觉得还是得多用,有一天自己不知不觉就入门了~
[解决办法]
同感
[解决办法]
接口能实现多态
[解决办法]
up
[解决办法]
up
------解决方案--------------------
我对设计模式的基本观点是:
不要为了模式而模式的,干看设计模式没有一点点用处的,要能将设计模式用于现实的代码,
这样才能汲取模式中的精华。
[解决办法]
接口的存在是为了定义规范,比如:J2EE规范、JDBC规范等,Sun公司并没有去实现它们,
只是让产品的提供商去实现,这样有一个好处,让使用的人只要学习一种就可以了,根本
用不着去考虑具体是如何实现的。如果没有这个规范,那就讨厌了,MySQL的要去学习MySQL
的实现,Oracle要去学习Oracle的实现等等。
再有接口用于降低应用程序各层之间的耦合度,让干涉减至最小,实现程序的多态性。
要想了解更多的可以去看看有关于面向对象设计原则的资料。
[解决办法]
不能光看书,要在实际操作中理解。
[解决办法]
理解接口很重要,10个人就理解出10样来。而且自己理解完后,都不知道对错,而且总是以为自己说得就是正确的。
15楼说的就是不正确的,所以,我建议你们还是找点正宗系统的资料看吧。
[解决办法]
java2000_net 老紫竹 说得很好了。
我补充一下自己的体会。
前段时间为某银行写了一个单点登录的网站(简称MIS),
该网站的作用是:所有登录进MIS的用户,当需要登录接入MIS的子系统时,直接跳转而不需要再次输入登录用户名密码。
(为讨论的针对性,我们省去密码修改的功能,假设在MIS中可以得到当前用户在各子系统的登录用户名和密码)
于是,我们如果能够知道当前用户登录子系统的URL请求时,直接让MIS的请求用户在IE中做URL跳转即可。
但是我们并不知道未接入的各个子系统的登录地址、参数名称,那怎么办呢?
(如:有的是:http://ip1:port1/login1.do?user1=?&pass1=?,有的是http://ip2:port2/login2.do?user2=?&pass2=?)
于是设计接口如下:
public interface ISingleSignOn{ /** * 根据用户名密码、服务器信息,得到登录子系统的表单信息 * @param loginURL 登录子系统的地址,如:http://ip1:port1/login1.do * @param userName 用户名 * @param password 密码 * @return 登录子系统所需要的URL字符串 * @throws CanNotLoginException 不能登陆时抛出异常,如:子系统不可用、网络异常等 */ public String getLoginURL(String loginURL,String userName, String password) throws CanNotLoginException; }
[解决办法]
"火龙果" 说得不错。
我得理解是:接口是一种提供标准、抽象、隔离的方式。是在反复重构后形成得一种系统结构模型。反应出业务系统对于业务模型的客观描述。这种描述是本系统的根本性描述,别得系统需要跟本系统进行交互得时候需要遵循的标准。
对接口编程,是一种口号,而不是一种实践。因为除非你能做过,对于一个陌生的需求,陌生得系统,你应该基于实现编程。在有数次得反复后,你能够知道这个系统中那些是变得,那些是不变得,而这些稳定得东西,我们可以确立为一种规则,就是接口。
[解决办法]
同意
[解决办法]
就是一上来 什么也别管,先实现,能实现就好!等做多了就知道怎么做方便合适了~
[解决办法]
什么是原因呢?什么是结果呢?理解出现了断层了,只知道结果了。
[解决办法]
接口是体现多态很重要的概念, 建议一个类,然后通过类来创建不同的对象 这是多态, 接口则是提供一个定义, 不同的类用不同的方法实现他, 这也是多态。 理解了接口,才能更好的理解模式。 建议多看看开源的代码, 看代码要从宏观上看。
其实最重要的还是用, 看书上的话 还自己去设计 完全是两回事。 写代码的时候时刻记住 要面向接口编程。
[解决办法]
我认为接口无非就是第一 为了多种实现而生
第二就是你不需要知道别人的业务逻辑是怎么实现的,你只需要知道别人提供你什么接口,传递什么参数就可以啦。
第三就是为了实现代码的重用。