Java 8中默认接口和静态接口方法之间的区别

根据Oracle的Javadocs-

默认方法使您可以向库的接口添加新功能,并确保与为这些接口的较早版本编写的代码二进制兼容。

静态方法是与其定义的类相关联的方法,而不是与任何对象相关联的方法。该类的每个实例都共享其静态方法。

接口中的静态方法是接口类的一部分,无法实现或覆盖它,而类可以覆盖默认方法。

序号静态接口方法默认方式
1
基本的
这是仅属于接口的静态方法。我们可以在接口本身中编写此方法的实现
这是带有默认关键字的方法,类可以覆盖此方法
2
方法调用
静态方法只能在接口类上调用,而不能在类上调用。
它可以在接口以及类上调用
3
方法名称
接口和实现类都可以具有相同名称的静态方法,而不会彼此覆盖。
我们可以在实现类时覆盖默认方法
4。
用例
可以用作实用方法
它可用于在所有实现类中提供通用功能

接口中默认和静态方法的示例

public interface DefaultStaticExampleInterface {
   default void show() {
      System.out.println("In Java 8- default method - DefaultStaticExampleInterface");
   }
   static void display() {
      System.out.println("In DefaultStaticExampleInterface I");
   }
}
public class DefaultStaticExampleClass implements DefaultStaticExampleInterface {
}
public class Main {
   static void main(String args[]) {
      //上调用接口静态方法
      DefaultStaticExampleInterface.display();
      DefaultStaticExampleClass defaultStaticExampleClass = new DefaultStaticExampleClass();
     
      //在类上调用默认方法
      defaultStaticExampleClass.show();
   }
}