java8interface的新特性:default,static,funcation

default:默认方法

在类接口中可以直接定义的方法,实现接口的类可以直接使用

使用案例:

public interface MyInterface {  
    default void display() {  
        System.out.println("This is default method.");  
    }  
}  

说明:被default修饰的方法可以不被子类实现。即在不破坏现有代码的情况下,可以向接口中添加新方法。

这样的设计理念体现了适配器模式:target在适配原有的adaptee的情况下,可以添加新的adaptee

除此之外还解决了多继承问题:类可以实现多个接口,当多个接口存在相同签名的默认方法时,实现类可以指定实现哪一个接口的默认方法或声明自己实现

 

static:静态方法

可以直接通过接口名调用,不能通过接口的实现对类/接口的对象调用,不能被继承与覆盖

使用案例:

复制代码
public interface MyInterface {  
    static void showStaticMessage() {  
        System.out.println("This is a static method in interface.");  
    }  
}  
  
public class Test {  
    public static void main(String[] args) {  
        MyInterface.showStaticMessage(); // 直接通过接口名调用静态方法  
    }  
}
复制代码

可以作为辅助方法,实现一些辅助功能,不依赖于接口的状态与实例

 

functional interfaces:函数式接口

只包含了一个抽象方法的接口,可以使用lambda匿名实现

复制代码
@FunctionalInterface  //不是必须的,添加此注解后会被指为函数式接口,如果接口不符合定义(包含多于一个抽象方法)编译器会报错。但是即使没有这个注解,只要接口满足条件他就可以作为函数式接口使用
public interface MyFunctionalInterface {  
    void doSomething();  
}  
  
public class Test {  
    public static void main(String[] args) {  
        MyFunctionalInterface mfi = () -> System.out.println("Hello, functional interface!");  //实现接口
        mfi.doSomething();  //调用接口的方法
    }  
}
复制代码

 

posted @   天启A  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示