Java8特性之接口的默认方法与静态方法
2016-03-24 14:43
711 查看
简介
Java 8用默认方法与静态方法这两个新概念来扩展接口的声明。它允许添加新方法到已有接口中,但是不会破坏那些基于老版接口实现的代码的二进制兼容性。默认方法和抽象方法的区别在于:抽象方法是必须要实现的,而默认方法不是。意义
众所周知,我们应该使用接口编程,接口使得在交互时不需要关注具体的实现细节,从而保持程序的松散耦合。在API的设计中,设计简约而清晰的接口非常重要。被称作固定定律的接口分离定律,其中有一条就讲到了应该设计更小的特定客户端接口而不是一个通用目的的接口。良好的接口设计是让应用程序和库的API保持简洁高效的关键。如果你曾有过接口API设计的经验,那么有时候你会感觉到为API增加方法的必要。举个例子,假设你设计了一个简单的API Calculator,里面有add、subtract、devide和multiply函数。为了实现Calculator这个接口,需要写如下一个BasicCalculator类。如果Calculator这个API非常简单实用,其他开发者只需要创建一个BasicCalculator就可以使用这个API。然而,对于多个开发者来说,事实上给人的感觉却是此API的用户并不是面向这个接口进行编程,而是面向这个接口的实现类在编程。
如果我们使用默认方法,这样,用户就被强制要求对Calculator接口进行编程,并且不需要关注接口的详细实现。
案例
Java 8带来的另一个有趣的特性是接口可以声明(并且可以提供实现)静态方法。例如:
尽管默认方法非常强大,但是在使用默认方法时我们需要小心注意一个地方:在声明一个默认方法前,请仔细思考是不是真的有必要使用默认方法,因为默认方法会带给程序歧义,并且在复杂的继承体系中容易产生编译错误。更多详情请参考官方文档
相关文章推荐
- 个人Java笔记 多态1
- java的常见异常与错误总结
- Spring中bean初始化时机初始化方法和销毁方法
- (java)华为机试题:字母大小写判断
- 使用Java字节流拷贝文件
- Java的Md5加密
- Java的接口及实例
- java代码图片处理
- java里的EL表达式在JSP中不能解析的问题
- Java继承与清理
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- 关于MD5校验和java工程下的校验
- 深入理解Java的接口和抽象类
- (java)华为机试题:字符串变换
- MyEclipse 代码编写,编译卡死,启动卡死解决方案
- JAVA的代理模式(静态代理、JDK动态代理、cglib动态代理)
- eclipse debug问题
- (转)接口自动化测试 – Java+TestNG 测试 Restful Web Service
- java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别
- JVM源码分析-Java运行