在之前的文章我们介绍了一下 Java 中的抽象类和抽象方法,本章我们来看一下 Java 中的接口。
在日常生活中,我们会接触到很多类似接口的问题,比如 USB 接口,我们在电脑上插鼠标,键盘,U盘的时候不用去考虑它到底能不能插进去,只要型号对了就肯定能插进去,接口就相当于一个标准,你要想把鼠标插到我的电脑上,在出厂时就必须遵守该电脑定义的接口标准。
在 Java 中同样有接口的概念,当然也会有接口的定义标准。
1、有 interface 定义;
2、只能包含常量和抽象方法;
3、接口不能被实例化;
4、接口是需要被实现/继承的,实现类/子类:必须重写接口中的所有抽象类;
5、一个类可以实现多个接口,用逗号隔开,若又继承又实现,应先继承后实现;
6、接口可以继承接口;
我们先来看前三条,代码如下:
1 interface Inter { 2 public static final int NUM = 5; 3 public abstract void test1(); 4 5 double PI = 31.415926; // 默认 public static final 6 void test2(); // 默认 public abstract 7 8 int num; // 编译错误 没有初始化 9 public void test3() {} // 编译错误 只能是抽象方法 10 }
接下来我们看一下第4条:
1 interface Inter1{ 2 void a();// 默认 public abstract 3 void b(); 4 void c(); 5 } 6 class Aoo implements Inter1{ // 编译错误,所有抽象方法都必须重写 7 void a(){} // 编译错误,父类默认 public,子类类型不能小于父类 8 public void b(){} 9 }
我们再来看一下第5条:
1 interface Inter1{ 2 void a(); 3 } 4 5 interface Inter2{ 6 void b(); 7 } 8 9 abstract class Foo{ 10 abstract void c(); 11 } 12 13 class Aoo implements Inter1, Inter2{ 14 public void a(){} 15 public void b(){} 16 } 17 18 class Boo extends Foo implements Inter1, Inter2{ 19 public void a(){} 20 public void b(){} 21 void c(){} 22 }
最后我们看一下第6条:
1 interface Inter1{ 2 void a(); 3 } 4 5 interface Inter2 extends Inter1{ 6 void b(); 7 } 8 9 class Aoo implements Inter2{ // 抽象方法必须都得重写,包括接口继承接口的 10 public void a(){} 11 public void b(){} 12 }