什么是接口

老师上课说的接口 一直很迷是什么

今天看到篇好帖子 记录一下


34期javaEE就业班-你不知道的事之 接口-黑马程序员技术交流社区

 在javaEE就业班的不断学习中,

    大量的知识需要同学们拥有深厚的java基础功底去消化,

    而接口就是java基础的重点内容之一,

    鉴于有很多同学对接口的理解还是很基础,

    所以,我希望以一个简单易懂的方式帮助大家更好的理解接口,

    便于大家在接下来的课程当中,能快速掌握就业班的知识,

    内容如有不足的地方还请各位大神批评指正,补充完善

首先,在日常生活中的接口

      如:电源插座接口

任何电器只要有符合规范的插头,就可以插入插座,并获得电力

而每个厂家插座的生产技术、工艺都不一样,因为接口的实现可以不一样,但是并不影响电器的正常工作。插座的内部实现对于电器来说是完全屏蔽的。


所以如上我们可以简单总结为:1.按照接口规范进行方法调用,就能获得所期望的功能




       2.按照接口规范实现接口的的方法,就能提供所期望的功能

javaSE学习中学到的接口

  概述:接口是特殊的抽象类,所有的属性都是公开静态常量(全局常量),所有的方法都是公开抽象方法而且没有构造方法。

       而在1.8版本中,可以写方法体.


       特点:


      1.是程序的功能扩展


      2.对外暴露的规则


      3.降低耦合性


      4.可以用来多实现


下面用一个例子帮助大家理解接口的概念

例子:

       首先你作为一个汽车生产者,会生产不同品牌的汽车,每个汽车都需要有能开动起来的功能


// 定义一个接口,只要实现该接口,车就能开起来public interfacecanGo{

void go(); //

能开的功能

}

//

定义奥迪车实现接口

public class

Audiimplements canGo{

public void go(){

System.out.println("

奥迪开起来了");

}

}

//

定义捷达这个车实现接口

public class

JieDaimplements canGo{

public void go(){

System.out.println("

桑塔纳开起来了");

}

}

//

好了,现在你需要找一个会开车的司机,如果没有接口,每次有新的车生产出来,你就需要找到司机,教他如何开这辆车

public class

Driver{

public void drive(

Audi audi){  //教他开奥迪

audi.go();

}

public void drive(

JieDa jd){ // 教他开捷达

jd.go();

}

}

/*

然而,有接口时,我调用drive()方法, 让接口作为形式参数, 当你的车实现canGo这个接口时, 你的子类就可以利用面向对象的多态, 作为实际参数传入到drive()方法中,

调用开车方法的时, 无论你的保时捷还是兰博基尼都可以, 只要这些车实现canGo这个接口就行。*/

public class

Driver{

public void drive(

canGo cg){//接口作为形式参数

cg.go();

}

}

Public class test{

public static void main(String[] args) {

Driver dr = newDriver();//

实例化一个老司机

Audi audi = newAudi();//

实例化一个奥迪车

Dr.go(audi);  //

把车交给老司机

       

     //控制台就会输出奥迪开起来了

}

}

[if !supportLineBreakNewLine]

[endif]

整个过程我这个指挥者其实根本不知道来的到底什么牌子的车,我需要找一个老司机,把这些车都全部交给司机,老司机就知道怎么去开.

因为这些车都实现了我canGo这个接口,而老司机就能开所有实现了我这个接口的车。

这样就有一个好处,假如明天来了一辆拖拉机或者卡丁车,只要它实现了我这个接口,我只管交给老司机处理就可以了,

老司机本身也不需要再去改变什么,我这个指挥者也只需要找一个(实例化)老司机就可以了.

假如没有接口,就很难受了,来一个别克车,我要去创造一辆别克车,还要实例化,再来一辆大众车,我要再去创建一辆大众车,同样要实例化,

还要配备专门的老司机去接待,就会相当麻烦.

你可能感兴趣的:(什么是接口)