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

抽象类的子类怎么不实现父类的抽象方法也能编译运行?我在工程中遇到的
 
简单的说,抽象类就是一个声明接口方法的类,它的所有或者部分方法是抽象的,需要子类继承;接口不是一个类,但是它商定了一个调用契约。他们的区别在于,抽象类的类结构对于客户端是透明的,如果你的抽象类不公开类结构,客户端就没法调用抽象方法;接口则把类结构隐藏,只要任何实现了接口(就是双方调用契约)的类,都可以转换成接口给客户端使用,类结构信息对客户端是不透明的!
 
接口是后期绑定
鸟的抽象类都有飞行的方法.可以调用
飞机的抽象类也有飞行的方法,可以调用

但另一种情况,如果我规定一个可飞行物品的归类,鸟和飞机都是这个'可飞行物体'.但是他们并不是由一个抽象类派生的,没办法统一处理.怎么办呢?
可以定义一个'可飞行物体'的接口.然后把鸟和飞机都绑定到这个接口上.
那么只要是绑定'可飞行物体'接口就可以统一调用飞行方法了
 
个人认为,接口其实是一个交互的合约,虽然抽象类和接口有些相似,但两者还是有区别的.
当你的一个方法,或操作是针对一个抽象类的是候,意味着可以和这个方法交互的都必然是这个抽象类的派生类.当你有一个完全不同的类,它要和这个方法交互而去实现类似的操作时,你会发现,用抽象类是无能为力的,除非你作出较大的修改.
而当你的一个方法或操作是针对一个接口的时候,上面的问题就不会成为问题,因为,只要其它类实现了这个接口,这个方法就可以和它交互.而这新加的功能是不需要对原来的代码作什么太大的修改,甚至是不必修改就可以了.这样无疑是一种灵活的架构.
 
各位大侠,能介绍几本书吗
 
<<delphi高手突破>>
 
<<delphi高手突破>>
 
抽象类是什么啊,我是初学者,不清楚啊
高手指导一下
 
1. 接口是很清爽的.
在需要进行处理的类的代码中来完成实际的处理代码,这就是接口 而继承的确会有一些问题,尤其是多重继承,(不是多重继承的不涉及到比较问题) 针对多重继承来说 接口更容易控制一些.
java就是这样的.
2. 多重继承的复杂性是很难控制的:
而多重继承会增加代码之间的逻辑的复杂程度,而在超过一定界限后,会让人很费解.对于后起的修改和维护都很是麻烦.
所以接口是清爽的.. 如果需要就来实现这个接口,如果不需要可以不实现, 如果是继承来的则是必须要实现的,这在一定的时候会一波动及全身, 而接口只会涉及到实现了接口的类.
也许有人说可以只让涉及到的类进行继承的方式.我不否认那样做会有问题,但是以后就会有可能因为多重继承的复杂性产生出新的问题,一些不需要的函数会出现在一些类中..
 
对于接口的理解,我认为一方面你应该站在实际应用的高度开看待,不要从为继承而继承的角度去理解,错只在你现在设计的app,自己随时爱怎么改就怎么改,所以没什么困惑,也就迷惑了你对接口设计的理解。

假定你的app现在用户已经离不开它了,你又要帮用户修正功能或者扩展增强你app的功能时,你就能从侧面体会接口机制的苦心。

一切理论皆来源于解决实践问题,请不要忘记!
 
看看刘艺编写的《delphi面向对象编程思想〉里面的剖析接口那张,讲的不错。
 
李维的《delphi面向对象编程》
 
接口是在继承之外的一个多态表达的方便使用。。
注意这个〔多态〕。。。细想你会想到很多的东西。。。
 
谈谈我的理解,接口是实现服务的,就是说一个类实体可以通过接口调用到另外一个
实现了接口的类对象(提供)的接口方法,而不必非得自己也去定义实现这种方法;如果
有多个其他实体以不同的方式实现了同一个接口,那么,就等于提供了多种服务供使用,
只要一个类实体拥有一个这种接口指针,就可根据具体需要调用这些不同的方法/服务(只
要有实现接口的类实体存在);
另外,再谈谈我对接口在内存中实现的理解,接口就是一个指针,通过接口指针指向实
现接口的对象,编译器会将其指向对应的实现了的接口方法地址上,这样,就实现了对外
提供接口(方法)服务,但又只是接口透明,其他部分(方法)依然是对外不透明的,接口
指针无法访问,即实现封装;也就是说接口实现类在保护自身成员的前提下,对外提供
部分服务,服务是以接口这个约定提供的,调用者有接口指针,就可调用相应方法,而
不必自己去实现,这或许比抽象类节约了内存空间,因为调用接口方法只要一个特定类
型的接口指针就可以了。
我的一点看法,有正确的,或许也有错误,望大家指正。
 
接口定义被一个类实现的方法,它不能实例化,也不能自己实现它们的方法,是由支持接口的类来实现。
抽象类不用实例化,它提供的抽象方法为派生类定义了接口,它的任何派生类都必须实现这些方法。
 
这是一个好的话题!我喜欢 呵呵. 大家继续. 但3言两语 别人一下子理解不了.
突然觉得文字很苍白阿.
 

Similar threads

回复
0
查看
677
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
569
import
I
顶部