从接口的实现者角度看,接口定义了可以向外部提供的服务。
从接口的调用者角度看,接口定义了实现者能提供哪些服务。
在JDK8环境中,接口中的方法不再是只有抽象方法,可以有静态方法和default方法。
所谓default方法是使用default关键字来修饰的方法。一个接口可以有多个静态方法和default方法,没有个数限制。
对于静态方法,并没有特殊的地方,在接口中直接由接口名调用,不需要由接口实现类对象来调用。
而对于default方法,很明显是需要实例对象来调用的。
子类实现多个接口时,如果存在同名的默认方法,子类将不知道继承哪一个,因此编译器要求子类重写父类中的默认方法;不过注意的事,子类不能用default修饰,default只能修饰接口中的默认方法。
public interface ClassInterface {
void howdy();
class Test implements ClassInterface{
public void howdy(){
System.out.println("howdy");
}
}
default void test(){
System.out.println("default()");
}
static void test01(){
System.out.println("static");
}
}
public class Test05 implements ClassInterface {
@Override
public void howdy() {
System.out.println(111111);
}
public static void main(String[] args) {
new Test05().howdy(); //111111
new Test().howdy(); //howdy
new Test05().test(); //default()
ClassInterface.test01(); //static
}
}