A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邓江红 中级黑马   /  2014-4-1 13:37  /  1498 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马蔡红微 于 2014-4-17 18:20 编辑

接口和类主要的区别在哪里?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

3 个回复

倒序浏览

一.类与接口的区别

类:描述了一个实体,包括实体的状态,也包括实体可能发出的动作。

接口:定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。

1.接口与类区别:

(1)接口有点象一个规范、一个协议,是一个抽象的概念;

(2)而类则是实现了这个协议,满足了这个规范的具体实体,是一个具体的概念。

(3)从程序角度,简单理解,接口就是函数声明,类就是函数实现。需要注意的是同一个声明可能有很多种实现。

二. 接口的用处主要体现在下面几个方面:

(1)通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。

(2)通过接口可以指明多个类需要实现的方法。

(3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类。


三.一些接口的疑问:

1、从书中看到的是java程序的接口中只定义了常量及空方法,空的方法有什么用呢,还要在类中写方法体,那还要接口干什么。


答:接口中定义类方法的原型,但是不能说是空方法,因为空方法的意思是有实现体,只不过实现体是空操作。实际上接口没有定义任何实现体。具体的实现体都是在实现接口的类中,接口只是定义了这些方法的调用方式。


你当然也可以不用接口,直接在类里面写方法,但是如果你的一组方法需要在很多类里实现,那么把它们抽象出来,做成一个接口规范,不是更好么?


2、一个程序中写了2个接口,并在同一个类中写方法体,这与多继承有什么关系。


答:一个类描述了一个实体,这个实体可能是一个复杂的对象,它的动作很多,如果把这些动作分类,用接口a定义其中的某一组动作,接口b定义其中的另外一组动作,这样的结构,比较清楚。


这种方式具备了多继承的优点,避免了多继承的缺陷。实际上在历史上,接口在很大程度上,是为了解决多继承带来的种种问题而设计出来的。


3、包中那些已定义的接口,怎么知道那里面定义了什么方法。


答:接口里定义了方法的输入输出,这些都是协议,具体的实现都在每个类中。对于很多只需要抽象接口的地方,不需要知道具体的类是什么,只要这个类实现了这个接口就可以了。


评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
不同点:
1. 不能直接实例化接口;
2. 接口不包含方法的实现;
3. 类定义可在不同的源文件之间进行拆分;

相同点:
1.接口,类和结构都可以从多个接口继承;
2.接口类似于抽象类:继承接口的任何非抽象类型都必须实现接口的所有成员;
3. 接口和类都可以包含事件,索引器,方法和属性。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
接口:相当于没有方法实现的抽象类。
      接口不要public不能有访问级别修饰
   
1、一个类只能继承自一个类,但是可以实现多个接口
2、一个抽象类中可以定义实现代码,但是接口不能定义实现代码(哪怕方法中只是

   一个空的括号,也是空实现)
3、接口的多态性特征,类型转换、is、as和类基本一样,抽象类定义的是公共的实

  现和公共的能力,而接口只能定义公共的能力,接口相当于给类打了一个标签,  

标志这个类有这种能力。

4、接口中不能声明字段,能声明方法、属性、索引器,接口中的方法不能声明

public、private等,因为没有意义,private是类内部的相互调用,哪儿来的类内

部?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马