当一个接口要添加一些新的公共逻辑,写了一个新的方法,那么所有的实现类都需要重写新方法,如果实现类太多,会非常麻烦。
这时可以使用 default。
public interface OrderService { /** * 接口中的变量都是 默认 public static final的,可以不用写这些修饰符 */ String NAME = "static"; /** * static方法,可以直接通过接口名称调用 static方法。 * 比如 OrderService.selectName(); * */ static String selectStatic() { return NAME; } /** * default方法,实现类不强制重写 default方法。 * */ default String selectDefault() { return "default"; } String selectOrder(); }
public class OrderServiceImpl implements OrderService { @Override public String selectOrder() { return "order"; } }
public class InterfaceTest { public static void main(String[] args) { OrderServiceImpl orderServiceImpl = new OrderServiceImpl(); String user = orderServiceImpl.selectDefault(); System.out.println(user); // static方法,可以直接通过接口名称调用,无需实例化 String name = OrderService.selectStatic(); System.out.println("OrderService.selectStatic()结果为:"+ name); } }