使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口的基本格式如下:
[修饰符] interface 接口名 [extends 父接口名列表]{
[public] [static] [final] 常量; //全局常量
[public] [abstract] 方法; //抽象方法
}
修饰符:可选,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。
接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。
extends 父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。
方法:接口中的方法只有定义而没有被实现。
public abstract void eat(); //接口中只能定义抽象方法
void eat(); //接口中定义的方法没有声明修饰符,默认为 public abstract
public static final int NUM = 10; //在接口中定义一个常量
int NUM = 10; //常量
在JDK1.8后的新特性,可以被所有实现类
//接口之间可以多继承(注意:类是只能单继承)
//具体类实现接口必须实现接口的所有方法
接口的概念
1.接口是一组行为的规范、定义,没有实现(JDK1.8默认方法)
2.使用接口,可以让我们的程序更加利于变化
3.接口是面向对象编程体系中的思想精髓之一
4.面向对象设计法则:基于接口编程
接口的使用规则:
(1)定义一个接口,使用interface关键字
(2)在一个接口中,只能定义常量、抽象方法,JDK1.8后可以定义默认的实现方法
(3)接口可以继承多个接口,extends xxx,xxx
(4)一个具体类实现接口使用inplements关键字
(5)一个类可以实现多个接口
(6)抽象实现接口可以不实现接口的方法
(7)在接口中定义的方法没有声明访问修饰符,默认为public
(8)接口不能有构造方法
(9)接口不能被实例化
面向对象设计原则
(1)对修改关闭,对扩展开放
(2)面向接口编程
接口概述:
- 狭义的角度讲就是指java中的interface
- 广义的角度讲对外提供规则的都是接口
接口特点:
- 接口用关键字interface表示 interface 接口名{}
- 类实现接口用implement表示 class 类名 implement 接口名{}
- 接口不能实例化 按照多态的方式来实例化
- 接口的子类 可以是抽象类(意义不大),可以是具体类(要重写接口中的所有抽象方法)
一个类不写继承任何类,默认继承object类
接口的成员特点:
成员变量:只能是常量,并且是静态的并公共的,默认修饰符:public static final(不写系统默认加上,没有顺序之分)
构造方法:接口没有构造方法
成员方法:只能是抽象方法 默认修饰符: public abstract(默认加上)
类与类,类与接口,接口与接口的关系:
- 类与类 只能单继承,可以多层继承
- 类与接口
- 实现关系,可以单实现,也可以多实现
- 并且还可以在继承一个类的同时实现多个接口
- 接口与接口
- 可以单继承,也可以多继承
抽象类和接口的区别
成员区别:
- 抽象类
- 成员变量:可以变量,也可以常量
- 构造方法:有
- 成员方法:可以抽象,也可以非抽象
- 接口
- 成员变量:只可以常量
- 成员方法:只可以抽象
关系区别:
- 类与类 继承,单继承
- 类与接口 单实现,多实现、
- 接口与接口 单继承,多继承
设计理念区别:
- 抽象类 被继承的体现是:“is a”的关系。抽象类中定义的是该继承体系的共性功能
- 接口 被实现体现的是:“like a”的关系。接口中定义的是该继承体系的扩展功能