接口的作用对于很多新手来说很不容易理解,我给大家举个例子。
接口只是一个规范,所以里面的方法都是空的。
假如我开了一个宠物粮店,声明所有宠物都可以来我这里买粮食,这就相当于一个接口,

public interface PetRestaurant {public void buy();}当一只狗看到了,知道自己是宠物,所以它去实现这个接口public class DogPet implements PetRestaurant {
@Overridepublic void buy() {System.out.println("我是狗,我要买狗粮");}
}
当一只猫看到了,知道自己也是宠物,所以也去实现这个接口
public class CatPet implements PetRestaurant {
@Overridepublic void buy() {System.out.println("我是猫,我要买猫粮");}}
当狗和猫来我的店之前,我是不知道他们到底是什么,但是当他们来到我的店,我就知道一个要猫粮食,一个要狗粮食。因为他们都实现了 我这个接口,都可以买。下面这个类相当于一个接待顾客的类,即店小二,他接待所有实现了我这个宠物店接口的动物,传进来一个PetRestaurant 类型的宠物,注意,这个PetRestaurant 是接口
public class test {public void buy(PetRestaurant pet){pet.buy();}
}好了,这个时候我这个老板出现了,我可以给他们卖粮食了,相当于测试类
public class Tests {public static void main(String[] args) {PetRestaurant dog = new DogPet(); //实例化一个狗,相当于把狗顾客实例化PetRestaurant cat = new CatPet();//实例化一个猫,相当于把猫顾客实例化test t = new test(); //实例化一个店小二t.buy(cat); //把猫交给店小二t.buy(dog); //把狗交给店小二}
}

这样运行的结果就是
我是猫,我要买猫粮
我是狗,我要买狗娘

你知道吗,整个过程我这个店主其实根本不知道来的到底是猫是狗还是其他什么,我只要有一个店小二,把这些来的不知什么动物都全部交给店小二,店小二就知道怎么去卖了,因为这些狗啊猫啊都实现了我这个宠物店的接口,而店小二就负责接待所有实现了我这个接口的动物。这就有一个好处,假如明天来了一头小猪,只要它实现了我这个接口,我只管交给店小二处理就OK了,我这个店小二根本不需要变化,我这个店主也只需要实例化一下这个动物就OK
你想,假如没有接口,会怎么办,来一个猫,我要去创造一个猫,还要实例化,来一只狗,我要创建一只狗,同样要实例化,还要配备专门的店小二去接待,就会相当麻烦

练习

1、首先启动电脑上的Eclipse,依次选择File→New→Project。在弹出的Select a wizard窗口中,选择Java Project 后点击下一步。

2、输入项目名称后点击下一步(名称命名可以任意,但是要注意符合命名规范)、

3、鼠标右击新建的项目,依次选择New→Package,在package name里面输入自己想取的名字后点击next

4、鼠标右击包,依次选择New→ Interface,创建一个接口

5、将接口命名为ShoutAbility后,点击完成。

6、定义接口shout()方法,并按下Ctrl +S 保存,经常保存是一个良好的习惯。

7、右击包,依次选择New→Class,并将类命名为AoShout。

8、将AoShout 实现ShoutAbility接口,并且要实现接口里面的shout方法,实现接口的关键字为 implements。按下Ctrl+S 保存。

9、创建一个Bird类,并定义一个带参构造方法,实例化上面定义的接口。定义Bird 的 shout() 方法时,即可用接口变量调用接口方法。按下Ctrl +S 保存。

10、创建一个测试类,用接口的实现类AoShout创建一个接口对象,再用创建的bridShout对象创建一个鸟对象。这时候调用鸟类的方法,就会执行调用到接口的方法,通过接口找到实现类的方法嗷嗷叫。

Java 中的接口有什么作用?为什么不直接用类?相关推荐

  1. Java中实现接口与继承的区别

    ** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...

  2. Objective-C 入门(七)协议 protocol(JAVA中的接口)

    Objective-C 入门(七)协议 protocol(JAVA中的接口) 接口的作用想必大家都比较了解 OV中的 protocol 相比接口作用相似 语法稍有不同 1.先来看声明一个协议 在创建文 ...

  3. java中的接口是什么?

    接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类,编写接口 ...

  4. Java中实现接口的三种方式您造吗?

    本文介绍了Java中实现接口的三种方式:常规实现方式.匿名内部类和 Lambda表达式实现方式.希望已经了解的同学可以重新温习一下,不了解的同学则从中受益! Java中接口最常规的实现方式 同学们都会 ...

  5. Java中的接口命名[关闭]

    本文翻译自:Interface naming in Java [closed] Most OO languages prefix their interface names with a capita ...

  6. java中接口什么时候用_我什么时候应该在java中使用接口?

    在Java中精确使用接口的一个很好的例子将是理想的,适用于任何特定的规则. 看看丹以前所有的问题,他似乎只是逐字逐句地张贴家庭作业/考试问题. 令人惊讶的是,这些不是考试题或其他-今天才找到这个网站, ...

  7. Java 中 Comparable 接口的意义和用法.

    在之前的博文中已经介绍了Java中Collection 接口和 Collections类. http://blog.csdn.net/nvd11/article/details/21516075 一, ...

  8. java中的接口的定义以及实现关系

    一.什么是接口? - 硬件接口:设备之间的连接方式 - 软件接口:程序代码,特殊的类,表示一种规范,是具有N个方法的特征集合. java中的接口: 专家说的多个抽象类的抽象就是接口. interfac ...

  9. java中get接口示例_Java即时类| 带示例的get()方法

    java中get接口示例 即时类的get()方法 (Instant Class get() method) get() method is available in java.time package ...

最新文章

  1. 企业网络推广之中如何对网页设计提出新的色彩搭配原理?
  2. Java配置dbeaver_ubuntu我的工具安装 eclipse、dbeaver、jdk、kdesvn、
  3. qq地区采集_用户诉QQ浏览器违法收集个人隐私,法院裁定腾讯立即停止相关行为...
  4. 数据库 / 事务的 ACID
  5. Spring Security3源码分析-UsernamePasswordAuthenticationFilter分析
  6. 小甲鱼python课后题简书_Python练习题100道
  7. iOS时间转换相关整理(附送试用期逻辑处理)
  8. c语言 b的作用,在C语言中各个标点符号的作用
  9. 编程计算机教小明加法,Python校本课程第四课——教案
  10. NodeJS开源项目
  11. c语言中数组的变量j是什么,c语言中数组,一般数组
  12. 什么是电磁兼容标准?IEC、EN、TC77、CISPR等的区别!
  13. java做后台移动端QQ第三方登录
  14. 在美国租房子需要考虑什么问题?
  15. linux 截屏_如何在Linux上截图
  16. linux常见维护命令报错,Linux系统维护命令小结.ppt
  17. Android 6.0/7.0权限
  18. python 将数据库的 utc时间转换成本地时间
  19. java程序获取某年某月的天数
  20. 2018纪中夏季信息学集训总结

热门文章

  1. 变换例题_小学语文学习攻略9:句式变换知识点概述+例题讲练
  2. 苹果笔记本单独安装win10
  3. Linux cpu 占用率高问题查询
  4. ORA-01089 数据库无法正常关闭
  5. UITextField对字符串的个数限制
  6. 仿hotmail收件人弹层: onkeyup事件无法捕获到回车按键, 用onkeydown事件捕获额外处理回车键...
  7. 在填写表单中输入全角数字的解决方案
  8. OSPF的网络类型特征总结
  9. [转载]关于Microsoft Jet (msjet40.dll) Exploit
  10. eclipse集成python插件