0x01 什么是接口
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口通常有全局常量和公共的抽象方法来组成,所以接口可以看成是一种特殊的抽象类。
0x02 为什么要用接口
- 接口被用来描述一种抽象。
- 因为Java不像C++一样支持多继承,所以Java可以通过实现接口来弥补这个局限。 接口也被用来实现解耦。
- 接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的。
0x03 接口的实现
package moeh.www;
interface USB {
public final int number = 10000;
public void open();
public void write();
}
class Mice implements USB{
public void open()
{
System.out.println("鼠标打开了USB接口");
System.out.println("鼠标打印的数值:"+number);
}
public void write()
{
System.out.println("鼠标写入了USB接口");
}
}
class KeyBoard implements USB{
public void open()
{
System.out.println("键盘打开了USB接口");
System.out.println("键盘打印的数值:"+number);
}
public void write()
{
System.out.println("键盘写入了USB接口");
}
}
public interface MoHe {
public static void main(String[] args) {
Mice mouse = new Mice();
mouse.open();
mouse.write();
System.out.println("---------------------------------------------------");
KeyBoard keyboard = new KeyBoard();
keyboard.open();
keyboard.write();
}
}
结果展示:
0x04 接口的特性
- 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
- 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用private 修饰会报编译错误)。
- 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
0x05 抽象类和接口的区别
- 抽象类里面能对方法进行实现,接口不行
- 抽象类的属性中能有多种属性,但是接口中属性的默认为public final
- 抽象类不能多继承,接口可以
- 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。