在之前的文章我们介绍了一下 Java 中的抽象类和抽象方法,本章我们来看一下 Java 中的接口。

在日常生活中,我们会接触到很多类似接口的问题,比如 USB 接口,我们在电脑上插鼠标,键盘,U盘的时候不用去考虑它到底能不能插进去,只要型号对了就肯定能插进去,接口就相当于一个标准,你要想把鼠标插到我的电脑上,在出厂时就必须遵守该电脑定义的接口标准。

在 Java 中同样有接口的概念,当然也会有接口的定义标准。

  1、有 interface 定义;

  2、只能包含常量和抽象方法;

  3、接口不能被实例化;

  4、接口是需要被实现/继承的,实现类/子类:必须重写接口中的所有抽象类;

  5、一个类可以实现多个接口,用逗号隔开,若又继承又实现,应先继承后实现;

  6、接口可以继承接口;

我们先来看前三条,代码如下:

 interface Inter {
public static final int NUM = 5;
public abstract void test1(); double PI = 31.415926; // 默认 public static final
void test2(); // 默认 public abstract int num; // 编译错误 没有初始化
public void test3() {} // 编译错误 只能是抽象方法
}

接下来我们看一下第4条:

 interface Inter1{
void a();// 默认 public abstract
void b();
void c();
}
class Aoo implements Inter1{ // 编译错误,所有抽象方法都必须重写
void a(){} // 编译错误,父类默认 public,子类类型不能小于父类
public void b(){}
}

我们再来看一下第5条:

 interface Inter1{
void a();
} interface Inter2{
void b();
} abstract class Foo{
abstract void c();
} class Aoo implements Inter1, Inter2{
public void a(){}
public void b(){}
} class Boo extends Foo implements Inter1, Inter2{
public void a(){}
public void b(){}
void c(){}
}

最后我们看一下第6条:

 interface Inter1{
void a();
} interface Inter2 extends Inter1{
void b();
} class Aoo implements Inter2{ // 抽象方法必须都得重写,包括接口继承接口的
public void a(){}
public void b(){}
}