在之前接触到都属于JDK1.5到JDK1.7设计的新特性,而从JDK1.8特性开始,并且打破了很多原有的设计方案,其中最大变化的角就是接口,但是千万要记住一点:你们自己写的接口要遵循之前的原则
在讲解接口加强的处理之前分析一个实际的问题。
造成此种尴尬局面的核心问题在于:接口只是一个方法的声明,没有具体方法的实现,所有随着时间的推移,如果真的出现了以上的问题,那么该接口无法继续使用,那么这个时候从JDK1.8开始为了解决这样的问题,专门提供了两类新的结构
可以使用default来定义普通方法,需要对象开调用
可以使用static来定义静态方法,通过接口名就可以调用
范例:定义普通方法
1 package cn.Tony.demo; 2 interface IMessage{ 3 public default void fun() {//追加了普通方法,有方法体 4 System.out.println("hello"); 5 } 6 public static IMessage getInstanse() { 7 return new MessageImpl(); 8 } 9 public void print(); 10 } 11 class MessageImpl implements IMessage{ 12 @Override 13 public void print() { 14 System.out.println("Hello"); 15 } 16 } 17 public class TestDemo { 18 public static void main(String[] args) { 19 IMessage msg=IMessage.getInstanse(); 20 msg.print(); 21 msg.fun(); 22 } 23 }
也就是说整体来讲,接口感觉更像抽象类了,但是比抽象类强大在于,接口的子类依然可以实现多继承的关系,而抽象类只能是单继承
因为时间一长,许多的支持就会出现问题(量大的情况下),这种时候为了解决这种扩充的问题,才追加了此类问题,
但是此操作不属于标准设计,它属于挽救设计!