类,接口??

关于类和结口的概念,最近看了一些资料,
但还是不是很清楚之间的关系。


四个概念:类(class),类型(type),接口(interface)以及契约(contract)。
这里我们说到的类型和上面提到的类型有所不同,是狭义的OOP中的类型。

为了理解这几个概念,我先划分出三个概念域:一个是针对现实世界的,一个是针对特定程序设计范型的(在这里就是OO设计范型),最后一个是针对编译器实现的。也就是说,在现实世界中的概念必须有一种手段映射到OO范型中去,而OO范型中的概念也应该在编译器实现中有相同的概念对应。由此,

我们可以这样说,类是做为现实世界中的概念,而传统的OOPL都会提供class关键字来表示对现实世界模拟的支持。
       而接口,是作为OO程序设计范型中与类对应的一个概念。在OO设计中,我们所要做的就是针对接口进行设计和编程,而接口的实质含义就是对象之间的一种契约。
      而类型就是编译器实现中针对类和接口所定义的对应概念。

      可以这样说,类是现实世界中存在的客观概念,是唯物的。接口是设计人员定义出来的,存在于设计人员心中的概念,是唯心的。而类型是类和接口这两种概念的编译器实现的映射概念,也是唯物的。类型主要是用来指导编译器的类型检查的谓词,类是创建现实对象的模板,接口是OO设计中的关键概念。这三个概念相互区别(分别位于不同的概念域),又相互联系(都是代表相同的概念的不同概念域的映射)。


这篇文章的地址http://tech.ccidnet.com/pub/article/c1060_a81597_p1.html

根据我的理解,一个类是用来抽象现实生活的中的对象。
接口则是在程序中来描述这个类的(对象)状态、属性、动作(事件)。
但是,接口也是抽象的,接口是不能被实例化的。
而接口描述的所有的东西(姑且这么称呼),却是在类里面实现的。

类也有一个抽象类的概念,
在抽象类里面,我个人认为跟接口很相似,不需要定义具体的东西,
我们只需要定义一些抽象的方法等等。
而具体的完成可以放在子类里面。

由此看来,接口是否可以等同于抽象类呢?
(子接口可以有多个基接口,而子抽象类却只能有一个基类)



我们通常在意的是一个对象的复用。
什么意思?
比如:我们定义一个employee类以后,
我们再定义一个manager类为其子类,
其好处是,我们无须在去定义manager这个对象所有的方法,属性,动作了。
我们只需添加其manager特有的一些东西。
但这个前提是,employee类已经定义了具体的东西,如果employee类是一个abstract类,
那么,我们继承的还是一个模型,对于我们具体实现来说,没有用啊?

我觉得,接口除了在建立对象对应的模型有用以外,对于对象的复用(应该是继承更清楚一些)似乎是一点用处都没有。

因为接口无法实现具体的东西,接口的所有东西的实现仍需要在一个类中间定义。
那么我们的类继承接口的什么?一个(或多个)接口的所有成员模型??

如果我舍弃接口,我把所有的成员都在类定义,最终的效果是不是一样的呢?


总之,我对接口的使用上面存在种种疑问,恳请大侠赐教。。。
any advice r welcome!

原文地址:https://www.cnblogs.com/king_astar/p/3166.html