JDK1.8 —— 接口定义增强
使用default和static定义接口方法
JDK1.8(jre8)以后,接口中不在仅仅只允许定义抽象方法,开始允许定义普通方法了;而普通方法需要用default声明。
interface IMessage { public void print(); // 一个接口定义的抽象方法 default void fun() {// 接口中定义的普通方法 // System.out.println("Hello,World!") ; } } class MessageImpl implements IMessage { public void print() { System.out.println("Hello,World!") ; } } public class TestDemo { public static void main(String [] args) { IMessage msg = new MessageImpl() ; msg.fun() ;// 直接调用在接口类中定义的方法 } }
上例代码中,使用defautl定义方法,defautl定义的方法是接口中的普通方法,可以被外部类通过接口类直接调用使用该普通方法。
interface IMessage { public void print(); // 一个接口定义的抽象方法 default void fun() {// 接口中定义的普通方法 // System.out.println("Hello,World!") ; } static void get() { System.out.println("Hello,Woeld!") ; } } class MessageImpl implements IMessage { public void print() { System.out.println("Hello,World!") ; } } public class TestDemo { public static void main(String [] args) { IMessage msg = new MessageImpl() ; msg.fun() ;// 直接调用在接口类中定义的方法 } }
上例代码使用static方法定义,由此可以直接通过类调用方法,则不在实例化接口则可以调用。
~~~~~~~~
###
总结:
接口中default或static方法定义是为了避免子类重复的实现同样的代码
接口的使用还应以使用抽象方法为主