日期:2014-05-20  浏览次数:20798 次

使用接口式编程的好处是什么?
大家好!我初学Java,更是初涉足OO领域。看了些资料发现,Java特别推崇接口式编程。优点我也是能理解的,进一步隐藏了具体的实现,是一众更高级的抽象。但是我要问的是,不使用接口能不能实现同样的效果呢?一个接口只是定义了需要完成的事情,具体如何完成需要再定义一个接口的实现类。那么如果不定义接口,而是改为定义一个基类,这个基类中包含的成员函数只有定义没有实现,而后再由此派生出一个子类,子类给出每个成员函数的具体解决方法。这样作是不是就和接口一样了呢?如果一样,使用接口式编程有什么更好的地方呢?

谢谢!
 


------解决方案--------------------
如果是一个基类的话,即使没有实现,也可以实例化,你不怕出错么?
------解决方案--------------------
你定义这个基类,不就是一个接口的概念吗?而且Java支持单继承,明明是个接口可以完成的功能,你非要用个类来完成,将来实现如果还要集成其它的你不是很麻烦?
------解决方案--------------------
其实你说的这个基类是一个抽象类,两者之类的一些差别是容易让人迷惑...

抽象类的的优势在于,可以为部分方法提供默认的实现,避免子类重复的实现,从而可以提高代码的重要利用,但抽象类这一优势限制了多重继承,在JAVA中一个子类是不允许有多个直接的父类,

接口的优势在于一个类可以由多个接口实现,但接口的问题在不允许为任何方法提供实现..

在系统设计的时候..可以把接口作为系统中最高层次的抽象类型,如你所说,接口告诉外界系统能提供哪些服务,而抽象类可以用来定制系统中的扩展,部分实现一些方法,另一些功能让子类去实现,接口和抽象类的灵活运用其实可以较好的提高系统的松耦合程度
------解决方案--------------------
这些东西是要你在具体的开发中逐步体会的,因为有些东西只有你在具体的开发中才能体会到它的独特的有点,不过你有这样的是疑问还是好的。
------解决方案--------------------
看重构,使用类型编程,若在许多模块都使用打印功能,那么调用打印功能的程序就可以是唯一的
------解决方案--------------------
看看设计模式
GoF23个经典模式都是基于接口的
------解决方案--------------------
接口和抽象类的最大区别在于,接口支持多继承,抽象类只能被单继承。

由于抽象类中可能包含部分实现,所以抽象类被更多的用于Framework(框架)中。

而接口一般用于描述底层提供了哪些服务,上层可以用这些服务做什么,所以被更多的应用于模块的互联互通。
------解决方案--------------------
接口可以实现多态吧

java是单继承
比如你要做一个类,本身是thread的子类,又要用到继承,就只有实现接口来达到目的
------解决方案--------------------
interface和abstract都是抽象,abstract是行为/属性抽象,interface是功能抽象.
学OO首先要理解抽象什么意思,我都还在学...
好处嘛..比如说human和tiger都有行走的功能,你可以把这些归类到interface中,当你有一个动物的类包括有这两种动物时,你想让他们行走你只需要调一个同样的方法而不管对方是什么类型,具体的行走嘛,人有两个只脚,但有4肢,动物有4条腿,这就是到具体的动物类来实现了,但是他们行走时都是4肢摆动,而且都向前迈出一定的距离(当然是向前走时),所以我认为这些可以归类为行为抽象,具体的一步能迈出多远这依赖于每个具体实现的身高/体长.
我的看法,肯定在你看了后会觉得有问题的..呵呵..
------解决方案--------------------
up
------解决方案--------------------
程序设计的开始面向机器

然后高级语言 面向过程

后来出现Class,面向对象

GOF的设计模式泛滥的时候是
面向接口


而且现在可能是有面向服务和面向构件的趋势
------解决方案--------------------
个人理解
类继承是单继承对于以后的升级不是很好
而接口可以多继承
------解决方案--------------------
java只能单继承,表面上好像接口和抽象类差不多,但通过实现接口可以实现java的 "多重继承 ".

------解决方案--------------------
接口有它的独特之处,你可以在里面做你未知的事情!
------解决方案--------------------
做个比喻:接口:点菜的菜单;
抽象类:需要那些主料调料分哪几步做
实用类:如何做某道菜(具体的方法实现)
------解决方案--------------------
mark

bluemliu(冬至) 最后的比喻很形象~
------解决方案--------------------

------解决方案--------------------
理解的真透啊
------解决方案--------------------

------解决方案--------------------
表扬bluemliu (冬至)
------解决方案--------------------