抽象类和接口的区别 为什么要用接口 谁能介绍几本书关于接口用法的 ( 积分: 100 )

  • 主题发起人 主题发起人 xgwzw
  • 开始时间 开始时间
X

xgwzw

Unregistered / Unconfirmed
GUEST, unregistred user!
接口能实现的 抽象类也可以
那么使用接口的优点是什么
各位大侠发表一下看法
供小弟学习学习
希望有简单的代码描述
 
接口能实现的 抽象类也可以
那么使用接口的优点是什么
各位大侠发表一下看法
供小弟学习学习
希望有简单的代码描述
 
使用接口可以实现多继承,比如

TMyClass = class(IMyInterface, TMyObject);
 
个人以为,接口与抽象类的主要区别在于抽象类里可以含数据(即Field),而接口里不能含数据,另外接口能实现多重继承机制,但通常认为多重继承会破坏对象继承的体系结构。
从个人开发实践来说,除非你要实现跨语言调用,即做COM,否则用接口没有什么好处,只会将事情搞复杂。因为有接口必须有实现,接口有一套继承体系,实现类又有一套继承体系,你要维护两套体系,项目一大就相当繁锁。
 
设计接口的目的可能即是为了跨语言调用和多继承吧,因为很多语言是不支持类的多继承的,而接口可以弥补这方面的不足。
 
object pascal用接口实现了c++中的多重继程,抽象类是在父类中定义,有abstract关键字,它在交类中不需要实现过程代码,但在继承类中要实现具体的代码。它实现了多态性的机制。
 
接口能做到的 抽象类也能做到啊
多重继承用抽象类也能做到的
为什么要用接口呢
 
>>多重继承用抽象类也能做到的
给个例子。
 
一个类可以继承多个接口,但是不能继承多个父类;
类和借口的区别是:用类会使的程序结构依赖性加强,子类必须完全依赖父类;
用接口回降低程序结构依赖性,因为同样的子类可以实现多个接口;
这样在维护或者扩展程序功能时:用类会使得程序员维护很多地方,用接口就简单了,可以添加接口方法,也可以添加一个新的接口,对程序的修改也比较少;

这些都是工作中逐步就会感受到了;
 
只能用接口可以举个例子:
DLL里只支持函数的Export,不支持一个Delphi类的Export, 我如果在DLL里实现了一个Delphi类,但要在主程序里调用,不用接口就没法调用。
 
to:kk365
>>多重继承用抽象类也能做到的
给个例子。

我说的是在功能上实现 而不是形式上的
说错了
 
TO:wkh
你的感受正好与我相反,很有意思。接口确实能使程序灵活性加强。但通常编程时,能做到接口一次设计好的很少,通常都要改一改,但一改就得既改接口又改实现,而且接口与实现通常不在一个pas文件里,所以较繁锁。
 
http://www.tommstudio.com/ViewArticles.aspx?ID=816
http://www.tommstudio.com/
 
to:wkh
一个类可以继承多个接口,但是不能继承多个父类;
类和借口的区别是:用类会使的程序结构依赖性加强,子类必须完全依赖父类;
用接口回降低程序结构依赖性,因为同样的子类可以实现多个接口;
这样在维护或者扩展程序功能时:用类会使得程序员维护很多地方,用接口就简单了,可以添加接口方法,也可以添加一个新的接口,对程序的修改也比较少;

接口的实现也是通过了继承的方式
添加接口时,也可以在子类中添加方法来实现
在我看来 好象是一样的,
可以先定义一个抽象类,再继承,如果说有多个接口的话, 抽象类的实现就可以用方法代替
这是我的一个看法
 
//来自:xgwzw, 时间:2005-8-4 12:22:57, ID:3156016
//接口的实现也是通过了继承的方式
不要这样理解,至少在使用DELPHI的时候不要这样理解.
C++中使用多重继承纯虚类实现接口.DELPHI不支持多重继承.接口是一个虚的东西,他不是一个真正的实体,他必须依附于其他的实体才能存在.继承在DELPHI中使用IS来判断.也就是[A IS B].但是[对象 IS 接口]这种理解是不合理的.只能说[对象 支持 接口].

不要太过于往下走.因为在语言之下,其实大家并没有什么区别.VC和DELPHI又有什么区别呢.如果要讨论,那么就这个问题,我想讨论的应该是语言表现层的东西
 
接口在出现最初是为了实现COM,到后来才演变成一种通用机制.在多层分布系统中接口是一种程序间有效的通讯手段.
 
接口重用,就是多态
 
看看关于JAVA的讨论会明白许多,面向对象编程就是面向接口编程
 
>>面向对象编程就是面向接口编程??
我怎么没听说过?
 
接口是[red]产品级[/red] 的面向对象,其他的多数是[red]代码级[/red]的面向对象
 
后退
顶部