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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hsy 中级黑马   /  2014-8-18 15:06  /  1479 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

接口到底是什么啊?怎么理解它?它有什么用?什么时候用?具体怎么用?在这先谢谢各位了!!!!:handshake

14 个回复

倒序浏览
通俗易懂?就是类似于usb接口的东东
回复 使用道具 举报
夜雪天狼 发表于 2014-8-18 15:17
通俗易懂?就是类似于usb接口的东东

具体一点呢?
回复 使用道具 举报
定义模版。。。
回复 使用道具 举报
赞同2楼,楼主继续往下学吧,学着学着自然就理解了
回复 使用道具 举报
我的感觉是在大项目中,参与的人很多。那么开始设计的人创建大框架,接口的作用就是来定义一组规范的, 你只要实现了我接口i里面预定义的方法,你就可以跟我这边交互
回复 使用道具 举报
不懂就多看几遍,再不懂就问度娘
回复 使用道具 举报
relive 中级黑马 2014-8-18 23:51:22
8#
一、类和实例
                1. 类是具有相同特征的一类事物的抽象;
                2. 实例是类的实例化,类的具体表现;
                3. 定义类
                        i. public修饰一个类的时候,该类文件只能有一个public,但该文件依旧可以定义多个类;
                        ii. 非public修饰的类文件,可以有多个;
二、抽象类
                1. 理解
                        i. 抽象类的抽象级别介于类和接口之间,他即表示一种规范,也为继承他的子类提供公共的方法;继承其的子类如果不实现其抽象方法,则该类也必须定义为抽象类;
                        ii. 抽象类的设计思想:模板类,为继承其的子类提供实现的模板,在其基础上做修改实现个性化;
                2. 细节
                        i. 抽象类必须用abstract修饰,抽象类可以没有抽象方法,但一个类有抽象方法,则必须定义成抽象类(接口里面全是抽象方法);
                        ii. 抽象类不能被实例化,即使该类不包含抽象方法,也不能被实例化;
                        iii. 抽象类可以包含普通类的所有成员(field、function、构造函数、初始化块、内部类、枚举类);
                        iv. 抽象类只能被继承,抽象方法只能被重写;
                        v. 抽象方法没有方法体,举例:public abstract void showMsg();
三、接口
                1. 理解
                接口抽象级别最高,其不仅体现规范,而且还体现规范和实现分离的设计原则。
                2. 细节
                        i. 接口通过extends可以有多个直接父类接口(逗号隔开),但是接口只能继承接口,不能继承类;
                        ii. 接口定义的是一种规范,实现其的子类必须遵守该规范,所以接口里面不能有构造函数和初始化块的定义;
                        iii. 接口里面的所有成员都是public的访问权限;
                        iv. 对于field而言,只能是常量,系统会默认赋予static和final两个修饰符;
                        v. 对方法而言,只能是抽象方法,系统会默认增加abstract来修饰方法,所以接口里面不能定义static方法;
                        vi. 实现接口和继承的效果一样,可以获得所继承的接口的所有field和方法,内部类和枚举类;
                        vii. 一个类实现一个或多个接口,必须完全实现接口里面定义的抽象方法,否则该类只能保留抽象方法,定义成抽象类;
                        viii. 接口和抽象类都不能被实例化;
回复 使用道具 举报
relive 中级黑马 2014-8-18 23:55:26
9#
通俗来说,抽象级别“类<抽象类<接口”,类只是一些现实的抽象,他要顾及具体的实现;抽象类体现“模板”思想,既要为继承其的子类做规范(抽象方法),又要为其所有的子类提供公共的方法(普通方法,所有子类都共有的方法);而接口抽象级别最高,所有的属性都是public static final修饰,所有的方法默认都是public abstract修饰,所以其规范了实现他的子类必须实现这些规范(方法)
回复 使用道具 举报
楼上的那位总结的不错哦,,要想理解这些知识不是一会的功夫,,得自己慢慢的去体会哦,:)
回复 使用道具 举报
看看接口和抽象类的区别
回复 使用道具 举报
接口作为系统与外界交互的窗口,接口体现的是一种规范。对于接口的实现者而言,接口规定了现实者必须向外提供哪些服务(以方法的形式来提供);对于接口的调用者而言,接口规定了调用者可以调用哪些服务,以及如何调用这些服务(就是如何调用方法)。当在一个程序中使用接口时,接口是多个模块之间的耦合标准;当在多个应用程序之间使用接口时,接口是多个程序直接的通信标准。
当理解了上述文字,也就知道什么时候用,怎么用了。其中一个应用场景就是工厂模式了,如:对数据库进行增删改查操作,可以使用JDBC或者Hibernate等方式,这是我们就可以将这些操作定义在一个接口里,再创建2类分别实现改接口,至于要使用哪种方式,可以通过对象工厂获取具体的实现对象来操作数据库。
回复 使用道具 举报
男人你得有范 来自手机 中级黑马 2014-8-20 15:29:23
13#
我也很模糊
回复 使用道具 举报
nadax 中级黑马 2014-8-20 17:13:59
14#
主板上的USB  PCI 可以理解为借口 只要按这规定就可以实现功能。 不遵守着规则就不可以
回复 使用道具 举报
本帖最后由 zeus00456 于 2014-8-20 23:59 编辑

某某手机厂商要出新手机了,这个手机是什么样子的呢?来,我们做一个概念机的演示视频,各位客户,您过目。

这里的概念机是什么意思可以理解吗?我没有这个新手机的实物(废话,有就上市了);但是我可以通过种种手段展现我这个手机应该能达到的效果。这个效果不是真实的,但是足够让客户对“我这个厂商想干什么”产生一个概念。而我这个手机到底实际中是个什么效果,您等我们的研发部门研发出来再看吧。
到现在都没问题吧?

接口就是一个“概念类”,有哥们问:它有多概念啊。呵呵,它概念的就剩下一点概念了。一个接口,它给了我们什么信息呢?
1.接口名,往往反映接口的作用,最经典的例子:Runnable、Throwable
2,抽象方法,全都是抽象方法
这点东西也就能提供一点概念了
=====================

接口的作用不好说,我就说说自己的理解吧
区别于继承,继承的作用是标明类与类之间的关系,搭建类的体系;
而接口除了完成上面的内容,还可以任意的为一个类添加特性(多继承意味着添加多个属性)

接口所规定的的功能往往十分简单,以上面的两个例子,一个是可运行,一个是可抛出,你说这功能复杂不?单一的在单一一点就没了!所以说,接口是对某一个特性提出概念

应用上,继承用在类中有东西不明确的时候;而接口用在类中内容都不明确的时候。
英语老师教英语,数学老师教数学……(这写多了就贫气了)
老师的其它属性咱们都是知道的,姓名,年龄等属性咱new老师的时候传,成员方法咱也有,就是“教学”这个方法,你说咱写啥,写教数学英语老师能答应吗,写教英语数学老师能答应吗……只能空着,这就是抽象方法,这个教师类就是一个抽象类。
现在变了,校长说:明天咱学校就有教编程功能了!学校里老师纳闷啊,怎么就能教编程了呢?老师们什么都不知道,就知道明天肯定会来一个东西(谁说非要来个编程老师,来个编程学习机不行啊?),这个东西是个活物还是死物不知道,就知道这个东西有个特性,叫做能教编程,这个东西有个功能叫做叫编程,请看下面的伪代码,这种什么都不知道,就有一点概念的就是接口
interface  鬼知道是什么_反正能教编程【友情提示,前面是一个恶搞的接口名】
{
    void 鬼知道具体是啥_反正是教编程的方法();
}
这就是明天来的东西的特性,反正明天来的可以使学校具备教编程功能的玩意要有这个接口描述的特性(实现接口)
==========
lz的提问,我上面所说基本上都涵盖了,请楼主自行提取有用的信息吧,说的有点乱,因你要通俗的,我就尽量采用接地气的方式说的,希望对你有用。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马