Java中接口的作用:
接口表示一种规范,一种协议,它规定了凡是实现此接口的类必须有的行为和动作,从而统一Java源码中的许多类和实现,可以面向接口编程和实现多态的效果。因此,如果阅读jdk源代码,我们会发现大量的接口,这些接口定义了行为和规范,使得Java中庞杂的类统一起来,具体的接口方法的实现还要看Java的实现类。
自定义实现接口的类:
Java中定义了大量的接口,这些接口都要相应的许多实现,我们可以在不同场景下使用不同的实现,有的时候,可能现有的实现并不能满足我们的要求,于是我们可以自己实现jdk中的接口。
实现的方式有两种:
新建一个类实现接口,这种方式适用于复用类的场景
直接new一个接口,内部实现方法,这种方法适用于实现类只使用一次的情况。
CharSequence cs=new CharSequence() {
@Override
public CharSequence subSequence(int start, int end) {
// TODO Auto-generated method stub
return null;
}
@Override
public int length() {
// TODO Auto-generated method stub
return 1;
}
@Override
public char charAt(int index) {
// TODO Auto-generated method stub
return 1;
}
};
System.out.println(cs.length());
通过阅读jdk源码,我们发现,许多Java实现类都是实现了多个接口,每个接口定义了不同的动作,所以实现类同时拥有这些动作。
String、StringBuilder、StringBuffer都是基于char数组实现的,只是具体的实现不同,所以它们都实现了CharSequence接口
Java8的新特性,在接口中的方法前加default,可以在接口中实现该方法
StringBuilder是jdk1.5之后引入的新类,它和StringBuffer的API基本兼容,区别就是前者适用于单线程下的字符串操作,因此没有做同步,所以速度较快;而后者适用于多线程的字符串操作,做了同步处理,所以速度较慢,一般来说,我们优先选用StringBuilder完成操作,因为大部分字符串操作都是在单线程环境下进行的。