Java的default关键字
-
default是在Java8以后引入的一个新特性,在Java8之前,接口中只能声明方法的签名,不能有方法的实现,在Java8之后,default关键字可以定义默认方法在接口中。
-
当接口中有默认方法时,实现该接口的类可以选择是否覆盖默认方法,如果没有覆盖,默认方法就会被继承和使用,实现类也可以重写这个方法。
-
一个接口中可以有多个默认方法,如果一个类实现了多个接口,并且接口中有相同的默认方法,那么实现类需要提供自己的实现。
-
默认方法的调用是通过接口的实例进行的,而不是实现类的实例。
-
默认方法不能用static和final修饰。
示例代码
public interface Student {
void dating();
//默认方法
default void attend() {
System.out.println("学生都要上课");
}
}
/**
*实现类中没有实现默认方法
*/
public class StudentImpl implements Student {
@Override
public void dating() {
System.out.println("大学生可以谈恋爱");
}
public static void main(String[] args) {
Student student = new StudentImpl();
student.dating();
student.attend();
}
}
结果如图