默认方法

假如现在有一个接口,它有非常多的实现类,现在想在这个接口上面再加多一个抽象方法,这样的话,每个实现类都需要去实现这个接口,即使有些实现类没有实现这个抽象方法的必要。因此,为了解决这个问题,java8给接口新增了一个默认方法:在接口中定义的抽象方法可以使用default关键字修饰,被default关键字修饰的抽象方法需要编写方法体,而这个方法体则作为这个抽象类的默认实现方法,实现这个接口的实现类就没有必要都需要去实现这个抽象方法,直接使用它的默认实现即可,如果某些子类觉得这个默认实现不能满足我自己的需求,则可以再自己去实现一个可以满足需求的实现方法。语法格式如下:

  1. interface 接口名{
  2. 修饰符 default 返回值 方法名(){
  3. //方法体
  4. }
  5. }
  1. public interface MyInterface {
  2. void show();
  3. default void say() {
  4. System.out.println("66666666");
  5. }
  6. }
  7. class MyImplOne implements MyInterface {
  8. @Override
  9. public void show() {
  10. }
  11. @Override
  12. public void say() {
  13. System.out.println("MyImpl的say");
  14. }
  15. }
  16. class MyImplTwo implements MyInterface {
  17. @Override
  18. public void show() {
  19. }
  20. }

静态方法

Java8处理增强了默认方法,还允许接口拥有静态方法,接口的静态方法调用只能通过“接口.静态方法”的形式调用,静态方法不能被重写。语法格式如下:

  1. interface 接口名{
  2. 修饰符 static 返回值 方法名(){
  3. //方法体
  4. }
  5. }
  1. public interface MyInterface {
  2. static void run(){
  3. System.out.println("jhahahh");
  4. }
  5. }