50java 接口定义加强

46 阅读2分钟

接口定义加强

在之前接触到的都属于JDK1.5~JDK1.7设计的新特性,而从JDK1.8开始支持的新特性更多,并且打破了许多原有的设计方案,其中具有最大变化的就是接口。

 

一、接口使用问题

造成此种尴尬局面的核心问题在于:

接口只是一个方法的声明,而没有具体的方法实现,所以随着时间的推移,如果真的出现了以上问题,那么该接口就将无法继续使用。

那么从JDK1.8开始为了解决这样的问题,专门提供两类新的结构.

 


二、两类新的结构

  • 可以使用default来定义普通方法,需要通过对象调用
  • 可以使用static来定义静态方法,通过接口名就可以使用

 

 

三、范例:定义普通方法

package cn.mldn.demo;

Interface IMessage f

public default voidfun() { // 追加了普通方法,有方法体了System. out println("hello world");

public void

print();

class MessageImpl implements IMessage f@Override

publicvoidprint()f

System out println("www mldn.cn");

public classTestDemo f

publicstatic void main(String[] args)f IMessage msg = new MessageImpl();msg.print();

msg.fun();

 

四、范例:定义static方法

Package cn.mldn.demoInterface IMessage {

public default void fun() { //追加了普通方法,有方法体了System out .println("hello world");

}

//可以由类名称直接进行调用了

public static IMessage getInstance() { // 定义了静态方法return new MessageImp1();

}

public void print() ;

class MessageImpl implements IMessage{@override

pub1ic void print() {

System. Out .println("WWW mldn.cn");}

public class TestDemo {

public static void main(String[] args) {IMessage msg = IMessage. getInstance();msg. print( );

 

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

 

五、总结

因为时间一长,许多的支持就会出现问题(量大的情况下),这种时候为了解决这种扩充的问题,才追加了此类的支持。但是此操作不属于标准设计,它属于挽救设计