1、什么是接口

接口(interface)不是一个类,它是抽象方法的集合。一个类实现一个接口,从而继承和实现接口的抽象方法。 
抽象方法看这里:java中抽象概念如何体现的

接口的特点如下,先看与类类似的特点:

  1. 接口的写法和写一个类类似,但它们是两个不同的概念。类描述对象的属性和行为。接口仅仅定义了事物的行为,且不会具体化这个行为。
  2. 除非实现接口的是抽象类,不然接口中的所有方法必须在类(实现这个接口的类)中定义且实现。
  3. 接口同类一样,可以包含任何数量的方法。
  4. 接口同类一样,被写在同一个.java扩展名的源文件中,文件名与接口名称一致。
  5. 接口同类一样,会被编译为一个.class文件。
  6. 同类一样,需要指定包(package),来表明接口所在的目录结构。了解更多package看这里:package和import作用是什么

与类不同的几个方面:

  1. 接口不能被实例化。
  2. 接口不包含任何构造函数。
  3. 接口中的所有方法都是抽象的。
  4. 接口不包含实例字段。但可以定义常量,使用static和final关键字。 
    了解常量看这里:局部变量、类变量、实例变量有什么区别
  5. 类通过实现接口重写接口的方法,而不是继承。
  6. 接口可以继承另一个接口。

2、如何编写一个接口

使用interface关键字声明一个接口。 
例子:

/* File name : NameOfInterface.java */
import java.lang.*;
//Any number of import statementspublic interface NameOfInterface
{//Any number of final, static fields//Any number of abstract method declarations
}

编写接口需要注意:

  1. 接口是隐式抽象的。声明一个接口,不需要使用abstract关键字。
  2. 接口中的每个方法也隐式抽象的。方法也不需要abstract关键字。
  3. 接口中的方法是隐式公开的,即public。

例子:

/* File name : Animal.java */
interface Animal {public void eat();public void travel();
}

3、如何实现一个接口

当一个类实现一个接口,可以认为该类同意接受接口定义的行为。如果一个类不实现该接口的所有行为,该类必须自己声明为abstract。 
类使用implements关键字来实现一个接口。如下:

/* File name : MammalInt.java */
public class MammalInt implements Animal{public void eat(){System.out.println("Mammal eats");}public void travel(){System.out.println("Mammal travels");}public int noOfLegs(){return 0;}public static void main(String args[]){MammalInt m = new MammalInt();m.eat();m.travel();}
}

这将产生以下结果: 
Mammal eats 
Mammal travels

重写接口中的方法有几个规则:

  1. 接口方法抛出的异常在被实现时也需要抛出。
  2. 重写方法时,应保持接口方法的参数和返回类型一致。
  3. 一个实现类本身可以是抽象的,如果抽象类,接口方法可以不实现。
  4. 一个类只能扩展一个类,但能实现多个接口。
  5. 一个接口可以扩展另一个接口,类似于一个类可以扩展另一个类。
原文地址:http://blog.csdn.net/ooppookid/article/details/51172263

Java千百问_05面向对象(004)_java接口到底是什么相关推荐

  1. Java千百问_05面向对象(012)_泛型是什么

    1.什么是泛型 泛型是Java SE 1.5的新特性,泛型即参数化类型,也就是说所操作的数据类型被指定为一个参数.  这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法.  ...

  2. Java千百问局部变量、类变量、实例变量有什么区别

    Java千百问局部变量.类变量.实例变量有什么区别 局部变量.类变量.实例变量有什么区别 在聊局部变量.类变量.实例变量有什么区别之前,我们需要了解一下Java变量. 1.Java变量是什么 在数学世 ...

  3. Java千百问_03基本语法(002)_java都有哪些关键字

    java都有哪些关键字 首先我们来看看什么是关键字,关键字的含义. 1.java关键字是什么意思 关键字是电脑语言里事先定义的,有特别意义的特殊标识符,又叫保留字. Java的关键字对Java的编译器 ...

  4. Java千百问_03基本的语法(005)_二进制是如何做位运算的

    点击进入_很多其它_Java千百问 二进制是如何做位运算的 程序中的全部数在计算机内存中都是以二进制的形式储存的.位运算说白了,就是直接对整数在内存中的二进制位进行操作. 其它运算符看这里:java种 ...

  5. Java千百问_07JVM架构(015)_XmnXmsXmxXss有什么区别

    点击进入_更多_Java千百问 1.XmnXmsXmxXss有什么区别 首先,Xmn.Xms.Xmx.Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果. ...

  6. Java千百问_07JVM架构(009)_什么是新生代的复制算法

    点击进入_更多_Java千百问 1.什么是新生代的复制算法 了解堆内存看这里:java堆内存是什么样的 了解java垃圾回收看这里:java垃圾回收机制是什么 所谓复制算法(Copying),即将内存 ...

  7. Java千百问_01基本概念(007)_线程的状态有哪些

    点击进入_更多_Java千百问 1.线程的状态有哪些 在java中java.lang.Thread类有一个变量threadStatus,标示了该线程的当前状态,它是一个int类型,但是对应的get方法 ...

  8. Java千百问_01基本概念(012)_Socket是什么

    [点击进入_更多_Java千百问][1] [1]: http://blog.csdn.net/ooppookid/article/category/6134850 ###1.什么是Socket Soc ...

  9. Java千百问_06数据结构(014)_java数组如何存储在内存中

    1.数组的内存空间是何时分配的 Java中的数组是用来存储同一种数据类型的数据结构,一旦初始化完成,即所占的空间就已固定下来,初始化的过程就是分配对应内存空间的过程.即使某个元素被清空,但其所在空间仍 ...

最新文章

  1. Spring:SpringMVC一例
  2. mysql 6.5安装_(整理)MySQL_REHL6.5 安装MySQL5.5
  3. Python基础训练题-简单数学公式
  4. 13行满分代码:1038 统计同成绩学生 (20分)
  5. Jerry Wang的微信小程序开发系列文章
  6. 前端学习(1357) :模板配置
  7. php适用于什么服务器,php – 找不到laravel类(适用于localhost但不适用于DO服务器)...
  8. Ray集群搭建 Python Demo
  9. 索尼发布Xperia 8手机:采用骁龙630处理器
  10. c++ h264RTP接收和发送程序
  11. form表单自动回车提交
  12. 一种巧妙且简单的数据增强方法 - MixUp 小综述
  13. CMakeLists编译
  14. 11.3.1越狱后无cydia清除越狱环境重新越狱
  15. vue部署到服务器 路由刷新找不到
  16. 判断标题不为空(包含空格)
  17. JS实现点击按钮图片左右切换、点击图片按钮出现下拉菜单
  18. shiro官方源码包下载
  19. Python列表的相关操作
  20. 谈谈 996 背后的现象

热门文章

  1. pythonpandas重复数据统计_python – 连续的pandas数据帧之间的重复计算
  2. matlab动力学仿真_机械系统动力学MATLAB仿真(上)
  3. requestIdleCallback函数
  4. 设备 esp32_低功耗ESP32手持式袖珍显示屏
  5. HTML出现jQuery.Deferred exception: undefined is not a function,已解决
  6. mongodb获取数组中只符合条件的元素
  7. php如何防止重复提交表单,如何防止php重复提交表单方法
  8. oracle无效的关系运算符_每日一课 | Java 8中的instanceof运算符和访客模式替换
  9. 如何真正实现无提示保存Excel文档
  10. 超越Mask-RCNN:谷歌大脑的AI,自己写了个目标检测AI