1、什么是接口?
- 接口从语法角度来说像是一种特殊的抽象类,两者都可以包含抽象方法且不能创建对象。
- 接口是一种标准,通常用来约束其子类(实现类)应具备的功能。
- 接口是一种能力和约定
2、接口的语法
- 使用interface关键字定义接口
- 没有构造方法,不能创建对象
- 只能定义:公开静态变量、公开抽象方法(JDK1.8之前)
- JDK1.8及以上:允许有静态方法和默认方法(default)
3、接口和抽象类的异同
-
相同:
* 可编译成字节码文件 * 不能创建对象 * 可以作为引用类型 * 具有Object类中所定义的方法 * 类和接口中的抽象方法都需要被重写
-
不同:
* 所有属性都是公开静态常量,隐式使用public static final修饰 * 所有方法都是公开抽象方法,隐式使用public abstract修饰 * 没有构造方法、动态代码块、静态代码块 * 普通类只能继承一个类,但可以实现多个接口
4、接口的规范
interface A{
// 默认是公共抽象方法,访问级别为public
public void test(){
}
}
class B implements A{
// 重写以后,访问级别要更高,所以只有public
// protected default private(编译出错)
public void test(){
}
}
5、接口的多态
interface A{
public void a();
}
class B implements A{
//实现接口,重写父类抽象方法
public void a(){
System.out.println("a()");
}
}
class Test{
public static void main(String[] args){
A a1 = new B(); //接口作为父类引用
a1.eat(); //调用重写的方法,实现多态
}
}
6、类与接口的关系
-
类与类的关系
继承关系,用extends来描述继承关系;单继承 语法:class A extends B
-
类与接口之间的关系
实现关系,类实现接口,implements来实现一个或多个接口;多实现 语法:class A implements IB1,IB2,IB3...{}
-
接口与接口的关系
接口继承接口;extends关键字来描述继承关系;接口之间的多继承 IA extends IB1,IB2,IB3...{}