X xgwzw Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #1 接口能实现的 抽象类也可以 那么使用接口的优点是什么 各位大侠发表一下看法 供小弟学习学习 希望有简单的代码描述
X xgwzw Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #2 接口能实现的 抽象类也可以 那么使用接口的优点是什么 各位大侠发表一下看法 供小弟学习学习 希望有简单的代码描述
G gmsft Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #3 使用接口可以实现多继承,比如 TMyClass = class(IMyInterface, TMyObject);
K kk365 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #4 个人以为,接口与抽象类的主要区别在于抽象类里可以含数据(即Field),而接口里不能含数据,另外接口能实现多重继承机制,但通常认为多重继承会破坏对象继承的体系结构。 从个人开发实践来说,除非你要实现跨语言调用,即做COM,否则用接口没有什么好处,只会将事情搞复杂。因为有接口必须有实现,接口有一套继承体系,实现类又有一套继承体系,你要维护两套体系,项目一大就相当繁锁。
个人以为,接口与抽象类的主要区别在于抽象类里可以含数据(即Field),而接口里不能含数据,另外接口能实现多重继承机制,但通常认为多重继承会破坏对象继承的体系结构。 从个人开发实践来说,除非你要实现跨语言调用,即做COM,否则用接口没有什么好处,只会将事情搞复杂。因为有接口必须有实现,接口有一套继承体系,实现类又有一套继承体系,你要维护两套体系,项目一大就相当繁锁。
J jennykiller Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #5 设计接口的目的可能即是为了跨语言调用和多继承吧,因为很多语言是不支持类的多继承的,而接口可以弥补这方面的不足。
S suncheng_hong Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #6 object pascal用接口实现了c++中的多重继程,抽象类是在父类中定义,有abstract关键字,它在交类中不需要实现过程代码,但在继承类中要实现具体的代码。它实现了多态性的机制。
X xgwzw Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #7 接口能做到的 抽象类也能做到啊 多重继承用抽象类也能做到的 为什么要用接口呢
W wkh Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #9 一个类可以继承多个接口,但是不能继承多个父类; 类和借口的区别是:用类会使的程序结构依赖性加强,子类必须完全依赖父类; 用接口回降低程序结构依赖性,因为同样的子类可以实现多个接口; 这样在维护或者扩展程序功能时:用类会使得程序员维护很多地方,用接口就简单了,可以添加接口方法,也可以添加一个新的接口,对程序的修改也比较少; 这些都是工作中逐步就会感受到了;
一个类可以继承多个接口,但是不能继承多个父类; 类和借口的区别是:用类会使的程序结构依赖性加强,子类必须完全依赖父类; 用接口回降低程序结构依赖性,因为同样的子类可以实现多个接口; 这样在维护或者扩展程序功能时:用类会使得程序员维护很多地方,用接口就简单了,可以添加接口方法,也可以添加一个新的接口,对程序的修改也比较少; 这些都是工作中逐步就会感受到了;
K kk365 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #10 只能用接口可以举个例子: DLL里只支持函数的Export,不支持一个Delphi类的Export, 我如果在DLL里实现了一个Delphi类,但要在主程序里调用,不用接口就没法调用。
X xgwzw Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #11 to:kk365 >>多重继承用抽象类也能做到的 给个例子。 我说的是在功能上实现 而不是形式上的 说错了
K kk365 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #12 TO:wkh 你的感受正好与我相反,很有意思。接口确实能使程序灵活性加强。但通常编程时,能做到接口一次设计好的很少,通常都要改一改,但一改就得既改接口又改实现,而且接口与实现通常不在一个pas文件里,所以较繁锁。
TO:wkh 你的感受正好与我相反,很有意思。接口确实能使程序灵活性加强。但通常编程时,能做到接口一次设计好的很少,通常都要改一改,但一改就得既改接口又改实现,而且接口与实现通常不在一个pas文件里,所以较繁锁。
W www Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #13 http://www.tommstudio.com/ViewArticles.aspx?ID=816 http://www.tommstudio.com/
X xgwzw Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #14 to:wkh 一个类可以继承多个接口,但是不能继承多个父类; 类和借口的区别是:用类会使的程序结构依赖性加强,子类必须完全依赖父类; 用接口回降低程序结构依赖性,因为同样的子类可以实现多个接口; 这样在维护或者扩展程序功能时:用类会使得程序员维护很多地方,用接口就简单了,可以添加接口方法,也可以添加一个新的接口,对程序的修改也比较少; 接口的实现也是通过了继承的方式 添加接口时,也可以在子类中添加方法来实现 在我看来 好象是一样的, 可以先定义一个抽象类,再继承,如果说有多个接口的话, 抽象类的实现就可以用方法代替 这是我的一个看法
to:wkh 一个类可以继承多个接口,但是不能继承多个父类; 类和借口的区别是:用类会使的程序结构依赖性加强,子类必须完全依赖父类; 用接口回降低程序结构依赖性,因为同样的子类可以实现多个接口; 这样在维护或者扩展程序功能时:用类会使得程序员维护很多地方,用接口就简单了,可以添加接口方法,也可以添加一个新的接口,对程序的修改也比较少; 接口的实现也是通过了继承的方式 添加接口时,也可以在子类中添加方法来实现 在我看来 好象是一样的, 可以先定义一个抽象类,再继承,如果说有多个接口的话, 抽象类的实现就可以用方法代替 这是我的一个看法
Z zjan521 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-04 #15 //来自:xgwzw, 时间:2005-8-4 12:22:57, ID:3156016 //接口的实现也是通过了继承的方式 不要这样理解,至少在使用DELPHI的时候不要这样理解. C++中使用多重继承纯虚类实现接口.DELPHI不支持多重继承.接口是一个虚的东西,他不是一个真正的实体,他必须依附于其他的实体才能存在.继承在DELPHI中使用IS来判断.也就是[A IS B].但是[对象 IS 接口]这种理解是不合理的.只能说[对象 支持 接口]. 不要太过于往下走.因为在语言之下,其实大家并没有什么区别.VC和DELPHI又有什么区别呢.如果要讨论,那么就这个问题,我想讨论的应该是语言表现层的东西
//来自:xgwzw, 时间:2005-8-4 12:22:57, ID:3156016 //接口的实现也是通过了继承的方式 不要这样理解,至少在使用DELPHI的时候不要这样理解. C++中使用多重继承纯虚类实现接口.DELPHI不支持多重继承.接口是一个虚的东西,他不是一个真正的实体,他必须依附于其他的实体才能存在.继承在DELPHI中使用IS来判断.也就是[A IS B].但是[对象 IS 接口]这种理解是不合理的.只能说[对象 支持 接口]. 不要太过于往下走.因为在语言之下,其实大家并没有什么区别.VC和DELPHI又有什么区别呢.如果要讨论,那么就这个问题,我想讨论的应该是语言表现层的东西
B bnbchinafbi Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-09 #16 接口在出现最初是为了实现COM,到后来才演变成一种通用机制.在多层分布系统中接口是一种程序间有效的通讯手段.
M martinwang Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-09 #18 看看关于JAVA的讨论会明白许多,面向对象编程就是面向接口编程
Z zhukewen Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-10 #19 >>面向对象编程就是面向接口编程?? 我怎么没听说过?
Z zyycc Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-10 #20 接口是[red]产品级[/red] 的面向对象,其他的多数是[red]代码级[/red]的面向对象