前言:
在我们刚开始学习java的时候,我们都学过接口的定义,在java中接口只能存在抽象方法和常量,而不能出现方法的实现,而这一规定则在JDK1.8引入的新特新中被打破,下面我们来看一下在最新的JDK版本总对接口做了哪些更新。
一、default方法:
接口在JDK1.8引入的新特新,出现了default关键字修饰的方法,由defultf修饰的方法可以有自己的实现。
具体实现场景:例如我们定义了一个接口同时有很多个类实现了这个接口,但这些个类中却存在一些公共的方法,这时候我们就可以用default关键字将这些公共方法抽出了到接口中,具体看一下实现代码;
public interface MyInterface { void run(); default void test(){ System.out.println("MyInterface接口中的test方法"); } }
public class MyInterfaceA implements MyInterface{ @Override public void run() { System.out.println("MyInterfaceA类实现run放大"); } }
public class MyInterfaceB implements MyInterface{ @Override public void run() { System.out.println("MyInterfaceB类实现run放大"); } }
public class test1 { public static void main(String[] args){ MyInterface a = new MyInterfaceA(); MyInterface b = new MyInterfaceA(); a.test(); b.test(); } }
二、static方法:
在JDK1.8中接口中可以出现static方法,根据我们之前所学知识知道static变量和方法是属于类本身的,我们在调用的时候是不需要new一个对象出来的,而在接口中也是同样的,接口中出现的static方法也是属于这接口本身。
具体实现场景:static方法可以实现接口的屏蔽,让我们不用在关心实现类的,只用操作接口从而实现了代码的解耦,
public interface MyInterface { void run(); static MyInterfaceA getObject(){ return new MyInterfaceA(); } }
测试代码
public class test1 { public static void main(String[] args){ MyInterface a = MyInterface.getObject(); a.run(); } }
二、private方法:
在JDK1.9中接口中可以出现private方法,而private方法的出现主要是用于优化代码,减少代码的重复新和重新利用效,例如在接口中我们定义了多个default方法,而这些个default存在多行重复性的代码时,我们需要将这些行代码抽出来,而且不希望外部调用这看到这些抽出来的方法是,我们则可以使用private关键字