JavaSE_8系列博客——Java语言的特性(五)--接口和继承(5)--深入理解,并优化接口
来源:互联网 发布:mac txt转码 编辑:程序博客网 时间:2024/06/05 00:47
考虑一个你开发的接口叫做DoIt:
public interface DoIt { void doSomething(int i, double x); int doSomethingElse(String s);}
假设在以后的时候,你要添加第三种方法到DoIt,这样接口现在变成:
public interface DoIt { void doSomething(int i, double x); int doSomethingElse(String s); boolean didItWork(int i, double x, String s);}
如果进行此更改,那么实现旧DoIt接口的所有类将因为不再实现旧接口而中断。依靠这个接口的程序员会大声抗议。
尝试预测您的接口的所有用途,并从头开始完全规定好。如果要向接口添加其他方法,则有几个选项。您可以创建一个扩展DoIt的DoItPlus接口:
public interface DoItPlus extends DoIt { boolean didItWork(int i, double x, String s);}
注意:这里其实,是体现了面向对象中设计模式里边的一个开闭原则,更好的能够实现程序的灵活性和可扩展性、稳定性和可维护性。
现在,使用您的代码的用户可以选择继续使用旧接口或升级到新接口。
或者,您可以将新方法定义为默认方法。以下示例定义了一个名为didItWork的默认方法:
public interface DoIt { void doSomething(int i, double x); int doSomethingElse(String s); default boolean didItWork(int i, double x, String s) { // Method body }}
请注意,您必须提供默认方法的实现。您还可以为现有接口定义新的静态方法。具有实现使用新的默认或静态方法增强的接口的类的用户不必修改或重新编译以适应其他方法。
阅读全文
0 0
- JavaSE_8系列博客——Java语言的特性(五)--接口和继承(5)--深入理解,并优化接口
- javaSE_8系列博客——Java语言的特性(五)--接口和继承(2)--定义接口
- javaSE_8系列博客——Java语言的特性(五)--接口和继承(3)--实现接口
- javaSE_8系列博客——Java语言的特性(五)--接口和继承(4)--使用接口作为类型
- javaSE_8系列博客——Java语言的特性(五)--接口和继承(1)--宏观把控
- JavaSE_8系列博客——Java语言的特性(五)--接口和继承(6)--默认方法的使用场景
- javaSE_8系列博客——Java语言的特性(三)--类和对象(13)--理解类的成员
- javaSE_8系列博客——Java语言的特性(三)--类和对象(5)--定义方法
- javaSE_8系列博客——Java语言的特性(一)--关于面向对象基本概念的理解(1)
- javaSE_8系列博客——Java语言的特性(一)--关于面向对象基本概念的理解(2)--对象
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(4)-- 变量和数组
- javaSE_8系列博客——Java语言的特性(四)--注解--(1)--基础知识
- javaSE_8系列博客——Java语言的特性(三)--类和对象(3)--类的声明
- javaSE_8系列博客——Java语言的特性(三)--类和对象(9)--对象的创建
- javaSE_8系列博客——Java语言的特性(三)--类和对象(10)--对象的使用
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(5)-- 运算符
- javaSE_8系列博客——Java语言的特性(三)--类和对象(2)--类(宏观概述)
- 华为软件开发云测评报告二:代码检查
- 你了解Java中Map,List,Set的各种区别吗?
- Spring缓存注解@Cache使用
- 作业
- HTTP协议/RTSP协议/RTMP协议的区别——直播神文
- JavaSE_8系列博客——Java语言的特性(五)--接口和继承(5)--深入理解,并优化接口
- Java Web框架的不同
- PLSQL常用配置之窗口/版面保存、SQL格式化/美化、SQL注释\去掉注释等快捷键配置、登陆历史修改配置
- DDPCR
- LeetCode--Bit Manipulation
- 最常用的15大Eclipse开发快捷键技巧
- Codeforces Buttons
- DLL输入和输出函数—dllinport与dllexport
- java中冒泡排序,根据对象的属性,排对象