java8新特性之interface中的static和default方法
接口中的static方法
JAVA8中为接口新增了一项功能:可以定义一个或者多个静态方法
public interface InterfaceA {
/**
* 静态方法
*/
static void doSomething() {
System.out.println("InterfaceA do something ");
}
}
子类可以直接调用,方法如下:
public class Test {
public static void main(String[] args) {
InterfaceA.show();
}
}
//================调用结果如下:
InterfaceA do something
接口中的default方法
public interface InterfaceA {
/**
* 默认方法
*/
default void doSomething() {
System.out.println("default方法 do something ");
}
}
实现接口的子类:
public class InterfaceAImpl implements InterfaceA{}
测试类
public class Test {
public static void main(String[] args) {
new InterfaceAImpl().doSomething();
}
}
//================调用结果如下:
default方法 do something
改写default方法
如果子类想改写接口中的default方法,也是可以的。
public class InterfaceAImpl implements InterfaceA{
@Override
public void doSomething() {
System.out.println("InterfaceAImpl中default方法 do something ");
}
}
测试输出结果
InterfaceAImpl中default方法 do something
继承多个接口
当继承多个接口时,且多个接口中存在相同的default方法时,则子类必须重写该default方法。但是存在相同static方法时,则可以不必重写。