接口定义加强

  在之前接触到都属于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 } 

  也就是说整体来讲,接口感觉更像抽象类了,但是比抽象类强大在于,接口的子类依然可以实现多继承的关系,而抽象类只能是单继承

  因为时间一长,许多的支持就会出现问题(量大的情况下),这种时候为了解决这种扩充的问题,才追加了此类问题,

  但是此操作不属于标准设计,它属于挽救设计!

原文地址:https://www.cnblogs.com/Tony98/p/10464564.html