由于Java不支持多重继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念。接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类。接口中只包含方法的定义,没有方法的实现。接口中的所有方法都是抽象的。接口中成员的作用域修饰符都是public,接口中的常量值默认使用public static final修饰。由于一个类可以实现多个接口,因此通常可以采用实现多个接口的方式来间接的达到多重继承的目的。

在Java语言中,有些接口内部没有声明任何方法,也就是说实现这些接口的类不需要重写任何方法,这些没有任何方法声明的接口又被叫做标识接口,标识接口对实现它的类没有任何语义上的要求,它仅仅充当一个标识的作用,用来表明实现它的类属于一个特定的类型。这个标签类似于汽车的标志图标,每当人们看到一个汽车的标志图标时,就能知道这款汽车的品牌。Java类库中已存在的标识接口有Cloneable和Serializable等。在使用的时候会经常用instanceof来判断实例对象的类型是否实现了一个给定的标识接口。

下面通过一个例子来详细说明标识接口的作用。例如要开发一款游戏,游戏里面有一个人物角色专门负责出去寻找有用的材料,假设这个人物只收集矿石和武器,而不会收集垃圾,下例通过标识接口来实现这个功能。

import Java.util.ArrayList;

interface Stuff{}

//矿石

interface Ore extends Stuff{}

//武器

interface Weapon extends Stuff{}

//垃圾

interface Rubbish extends Stuff{}

//金矿

class Gold implements Ore{

public String toString(){

return "Gold";

}

}

//铜矿

class Copper implements Ore{

public String toString(){

return "Copper";

}

}

//枪

class Gun implements Weapon{

public String toString(){

return "Gun";

}

}

//榴弹

class Grenade implements Weapon{

public String toString(){

return "Grenade";

}

}

class Stone implements Rubbish{

public String toString(){

return "Stone";

}

}

public class Test{

public static ArrayList collectStuff(Stuff[] s){

ArrayList al=new ArrayList();

for(int i=0;i

if(!(s[i] instanceof Rubbish))

al.add(s[i]);

}

return al;

}

public static void main(String[] args){

Stuff[] s={new Gold(),new Copper(),new Gun(),new Grenade(),new Stone()};

ArrayList al=collectStuff(s);

System.out.println("The usefull Stuff collected is:");

for(int i=0;i

System.out.println(al.get(i));

}

}

程序运行结果为:

The usefull Stuff collected is:

Gold

Copper

Gun

Grenade

在上例中,设计了三个接口:Ore、Weapon和Rubbish分别代表矿石、武器和垃圾,只要是实现Ore或Weapon的类,游戏中的角色都会认为这是有用的材料,例如:Gold、Copper、Gun、Grenade,因此会收集,只要是实现Rubbish的类,都会被认为是无用的东西,例如Stone,因此不会被收集。

常见笔试题:

不能用来修饰interface的有( )

A:private            B:public              C:protected         D:static

答案:A、C、D。见上面讲解。

Java接口有时有结果 有时没有_《Java程序员面试笔试宝典》之为什么Java中有些接口没有任何方法...相关推荐

  1. Java程序员面试笔试宝典-Java基础知识(一)

    本文内容基于<Java程序员面试笔试宝典>,何昊.薛鹏.叶向阳著. 1. 基本概念 1.1 Java语言有哪些优点? 1.2 Java与C++有什么异同? 1.3 为什么需要public ...

  2. Java程序员面试笔试宝典-Java Web(二)

    本文内容基于<Java程序员面试笔试宝典>,何昊.薛鹏.叶向阳著. 1. Servlet与JSP 1.1 页面请求的工作流程是怎样的? 1.2 HTTP中GET与POST方法有什么区别? ...

  3. 程序员面试必备——《Java程序员面试笔试宝典》pdf

    <Java程序员面试笔试宝典>pdf 链接: https://pan.baidu.com/s/1uqxvY55jFOEAAzcn-pNVSQ 提取码: fety 1 内容简介 · · · ...

  4. Java程序员面试笔试宝典刷题总结~11

    虽然申请博客已经有一段时间了,却是第一次写博客,有点激动,不知道该写些什么,刚好大三老学姐正值找实习工作之际,每天都会刷一点题,现在在看Java程序员面试笔试宝典一书,刚好把里面的题每天总结5道,写在 ...

  5. Java程序员面试笔试宝典-数据结构与算法(四)

    本文内容基于<Java程序员面试笔试宝典>,何昊.薛鹏.叶向阳著. 1. 链表 1.1 如何实现单链表的增删操作? 1.2 如何从链表中删除重复元素? 1.3 如何找出单链表中的倒数第k个 ...

  6. Java程序员面试笔试宝典

    1. 基本概念 1.1 Java语言有哪些优点? Java为纯面向对象的语言: 平台无关性: Java提供了很多内置的类库: 提供了对Web应用开发的支持: 具有较好的安全性(数组边界检测和Bytec ...

  7. 读书笔记-Java程序员面试笔试宝典--持续更新中

    文章目录 第四章 Java基础知识 4.1 基础概念 4.2 面向对象技术 4.3 关键字 4.4 基本类型与运算 4.5 字符串与数组 4.6 异常处理 4.7 输入输出流 4.8 Java平台与内 ...

  8. Java程序员面试笔试宝典答案,基于HTML

    <p> 截至2012年,石埇镇有耕地面积12021亩,人均0.61亩:林地面积共计26344亩. </p><p><b> 矿藏资源</b>&l ...

  9. java程序员面试笔试宝典8.3排序

    1如何进行选择排序 1)对于给定的一组纪录,经过第一轮比较得到最小的纪录将该纪录与第一个纪录的位置进行交换. 2)接着对不包括第一个纪录以外的其他纪录进行第二轮比较,得到最小的纪录并与第二个纪录进行位 ...

最新文章

  1. 伍六七带你学算法 进阶篇-三数之和
  2. 字节跳动的敌人,只有时间
  3. Set的常用实现类HashSet和TreeSet
  4. Exchange 2003 限制用户外发邮件
  5. img超出div width时, jQuery动态改变图片显示大小
  6. 3dmax体积雾渲染不出来_corona渲染,非常实用的小技巧
  7. 宝塔服务器管理助手Linux面版-使用教程
  8. JavaScript学习(四十一)—字面量形式创建对象的注意事项和不足
  9. 云络科技服务器管理基础架构
  10. window 快捷键
  11. Oracle的BI解决方案
  12. 在Unity进行平台打包发布的时候需要注意的一些细节问题
  13. linux系统设置中文
  14. 测试报告包含哪些内容?
  15. mov文件如何转换成mp4视频
  16. 网络广告创意与制作技巧
  17. Codeforces-697C Lorenzo Von Matterhorn
  18. 【蓝桥杯备战】Day03
  19. 计算机PS属性怎么改,电脑不用ps怎么改图片分辨率_教你修改图片分辨率的方法...
  20. 3DMax学习:一:安装

热门文章

  1. UI Blue crystall class sap_bluecrystal is added here to html node
  2. SAP云平台ABAP编程环境免费账号使用过程中的一些问题
  3. initializeCachedDB function in JavaScript - how is the call delegated to
  4. Why manually change will not trigger text determination
  5. SAP ABAP Netweaver Note download debug
  6. Fiori Elements setBusyIndicatorDelay调试的几个关键点
  7. SAP OData实现错误消息:OPPORTUNITIES_GET_ENTITY not implemented in data provider class
  8. 部署在Netweaver应用上的Fiori缓存的调试
  9. 启动tomcat提示The Network Adapter could not establish the connection
  10. Java Array.sort的六种常用方法总结