接口定义加强
在之前接触到的都属于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.demo;
Interface 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( );
也就是说整体来讲,接口感觉更像抽象类了,但是比抽象类强大在于,接口的子类依然可以实现多继承的关系,而抽象类继续保持单继承。
五、总结
因为时间一长,许多的支持就会出现问题(量大的情况下),这种时候为了解决这种扩充的问题,才追加了此类的支持。但是此操作不属于标准设计,它属于挽救设计