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(); //调用接口的方法 } }
标签:
软件工程日报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通