接口 Interface

在JAVA编程语言中是一个抽象类型,是抽象方法的集合。接口通常以interface来声明。一个类通过实现接口(implements)的方式,从而实现接口的抽象方法。

  • 接口通过interface关键字来定义
  • 接口中不能实现方法,但是能声明方法
  • 类通过implements关键字来实现接口
  • 一个类如果实现了接口,就必须实现接口中的所有方法
  • 一个类可以通过implements关键字实现多个接口,但只能继承一个父类
  • 面向接口的多态(接口的引用指向其实现类)
  • 接口不能被实例化
  • 接口中的方法都是抽象方法(jdk1.8中出现的新特性:default、static。可以有方法体,不再是抽象方法。)
  • 接口中一般没有属性,有则必须被声明为pulic static & final形式(不声明编译器自动设置为 public static final类型)

接口与类的区别

  • 接口不能实例化对象
  • 接口没有构造方法
  • 接口中所有方法必须是抽象方法
  • 接口不能包含成员变量,除非是public static final变量
  • 接口不是被类继承了,而是要被类实现
  • 接口支持多继承(接口与接口之间只能是继承extends的关系,可以多继承)

抽象类与接口的区别

  • 抽象类中可以普通方法和抽象方法共存
  • 抽象类中可以有各种类型的成员变量
  • 接口中不能含有静态方法,抽象类中可以有
  • 一个类只能继承一个抽象类,却可以实现多个接口

接口的声明

(想了想还是菜鸟教程的声明写的好看些)

[可见度] interface 接口名称 [extends 其他的类名] {// 声明变量// 抽象方法
}

接口的实现

类在实现接口时必须实现接口的所有方法。

接口可以实现多态的功能。

示例

interface USB{public void connect();
}
//鼠标类实现USB接口
class Mouses implements USB{@Overridepublic void connect() {System.out.println("鼠标连接USB");}
}
//键盘类实现USB接口
class KeyBoard implements USB{@Overridepublic void connect() {System.out.println("键盘连接USB");}
}

我们可以通过下面的方法来实现不同对象对接口的实现:

public static void useUSB(USB usb) {usb.connect();
}public static void main(String[] args) {Mouses mouses = new Mouses();KeyBoard keyBoard = new KeyBoard();useUSB(mouses);useUSB(keyBoard);
}

通过给useUSB方法来传入不同的USB接口对象,从而达到多态的效果。最后打印结果如下:

鼠标连接USB
键盘连接USB

接口的继承

这里由于老师上课并没有重点提,不过在后面集合一章就是很明显的例子。

迭代器接口:

public interface Iterable<T> {/*** 迭代器的一些方法*/

  ......
}

Collection 接口:

public interface Collection<E> extends Iterable<E> {/*** Collection 的一些方法*/......}

List 接口:

public interface List<E> extends Collection<E> {/*** List 的一些方法*/......
}

接口的多继承

接口的继承与类的继承一点很大的区别就在于接口可以多继承,多继承的方式与类实现多个接口的形式类似:

public interface Hockey extends Sports, Event

Java 抽象类(面试)

用·abstract修饰的类叫做抽象类

抽象类的一些特点

  • 抽象类不能被实例化,只能实例化抽象类的子类。
  • 抽象类不一定包含抽象方法,但包含抽象方法的类一定是抽象类
  • 构造方法不能被声明成抽象方法
  • 子类必须父抽象类的所有抽象方法,除非子类也是抽象类
  • 用abstract修饰的方法称之为抽象方法,抽象方法只有方法声明,没有方法体
  • 抽象类中的方法可以是抽象方法,也可以是普通方法
  • 没有抽象的属性,属性不能被abstract修饰

转载于:https://www.cnblogs.com/JuanF/p/9272922.html

第6篇 Java中的接口与抽象类相关推荐

  1. Java中的接口与抽象类的区别

    抽象类 抽象类的作用与C++类似,不能实例化.只能通过子类继承,再进行实例化.一般是为了确定一种统一的抽象格式. // 定义的抽象类 abstract class AbsClass{abstract ...

  2. JAVA中的接口和抽象类的区别

    1.一个类可以实现多个接口,但是却只能继承最多一个抽象类: 2.抽象类可以包含具体的方法,接口的所有方法都是抽象的: 3.抽象类可以声明和使用字段:接口则不能,但接口可以创静态的final常量: 4. ...

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

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

  4. JAVA中常用接口的介绍及使用示例 java lang Comparable

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. mac mysql-python 失败_MAC OS安装MySQL-python总是失败,请帮忙看看什么原因?
  2. Hotspot GC Root 对应调用链
  3. 【牛客 - 373B】666RPG(线性计数dp)
  4. jQuery Mobile弹出对话框后不刷新原页面,保持原页面内容不变
  5. 【Flink】Flink 使用 ParameterTool 进行传参
  6. 考勤排班_考勤管理系统VS传统考勤排班优劣如何?
  7. 190713每日一句
  8. python智力问答测试_智力问答:经典的智力测试题
  9. jupyter notebook 拒绝连接 以及 查 IP
  10. 高级去雾算法与原理--暗原色图技术
  11. wps和office哪个好用 wps和office兼容吗
  12. python平行四边形函数_在Python中,如何确定一个点是否在某个平行四边形内?
  13. 二补数(2’scomplement)乘法算法及其Verilog实现 - 固定系数h
  14. 干货 | 科研人的KPI怎么算,H指数和G指数是什么
  15. webpack 3.0 + 从切图仔到前端工程师-姜威-专题视频课程
  16. RegExp——正则表达式
  17. 如何用项目管理软件,帮助项目经理监控项目进度?
  18. ERROR PythonRunner: Python worker exited unexpectedly (crashed)解决方法
  19. github上如何删除文件夹
  20. Java图片gh颜色渐变_强大的Java图像滤镜特效类库Java Image Filters

热门文章

  1. js 自己常用的小小技巧(持续更新)
  2. 不得不爱开源 Wijmo jQuery 插件集(13)-【Tooltip】(附页面展示和源码)
  3. 基于PSR-0编码规范开发一套PHP-MVC框架(二)
  4. 在Java中应用函数式编程请小心!
  5. 【重点】初窥Linux 之 我最常用的20多条命令
  6. 唠唠 RDS 那些事 —— RDS on Windows Server 2016 第二篇
  7. MyBatis3传递空值参数报异常的解决
  8. WINXP内PING一个IP地址时电脑会发出很响的一声“滴”声
  9. 机器视觉核心算法——图像预处理
  10. Q119:PBRT-V3,“复合重要性采样”(13.10章节)