接口在java编程中有极大的作用,对团队来说,更是不可或缺的部分。
接口中的方法往往是“哑”方法,即,在接口中,只有方法的声明,没有方法的具体实现。
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。
复用代码的其中一种形式是 客户端程序员遵循该接口来编写他们自己的类。
关键字的使用以及语法:
Java中的多重继承
interface CanFight{
void fight();
}
interface CanSwim{
void swim();
}
interface CanFly{
void fly();
}
class ActionCharacter{
public void fight{}
}
class Hero extends ActionCharacter implements CanFight,CanSwim,CanFly{
public void swim(){}
public void fly(){}
}
CanFight 接口与ActionCharacter类中的fight()方法的特征签名是一样的,而且,在Hero中并没有提供fight()的定义。可以扩展接口,但是得到的只是另一个接口。当想创建对象时,所有的定义首先必须都存在。及时Hero没有显式的提供fight()的定义,其定义也因ActionCharacter而随之而来,这样就使得创建Hero对象成为了可能。
(例子摘自 P179)
“确定接口是理想选择,因而应该总是选择接口而不是具体的类”。
对于创建类,几乎在任何时刻,都可以替代为创建一个接口和一个工厂(工厂在p187)。
任何抽象性都应该是应真正的需求而产生的。当需要时,你应该重构接口而不是导出添加额外级别的间接性,并由此带来的额外的复杂性。
最恰当的原则是选择类而不是选择接口。从类开始,如果接口的必须行变得非常明确,那么就进行重构。接口是一种重要的工具,但是最好不要滥用。
分享到:
相关推荐
javax.servlet.Servlet接口 servlet接口中的方法 javax.servlet.http.HttpServlet类(HTTP版本)
软件开发设计:应用软件开发、系统...云计算与大数据:包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
nopCommerce_4.4功能实现详解第6个示例程序
微信公众号接口基类 微信API 公用方法 微信接口默认常量值 只有配置错误才再次抛出异常
指令集及游戏各对象都提供了基类和接口,基于本平台开发,很多类可以直接继承. 3,优秀的UI设计,不使用DirectX,但却能够将可视化效果发挥到极致,优秀的可视化图元基类设计,仅需继承 4,强大的AI人工智能设计,并提供了...
通过定义抽象基类和接口,可以让子类实现自己的特定行为,而不需要修改父类的代码。这样可以保证代码的可扩展性和可重用性。 另一种实现开闭原则的方式是使用装饰器。装饰器是一种特殊的函数,它可以在不修改原函数...
C++中COM对象INTERFACE接口和接口基类三者的构建模型[归类].pdf
微信公众号接口基类 微信API 公用方法 微信接口默认常量值 只有配置错误才再次抛出异常
thinkphp项目封装好的一个api接口验证基类,没必要的不要下载,自己用的
一、简单介绍ADO.NET System.Data:DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint System.Data.Common(各种数据访问类的基类和接口):DataColumnMapping,DataTableMapping
PluginManager.cs 插件管理基类,可扩展 ISTRPlugin.cs 插件需要实现的接口程序
Low-End Collections Framework是对大多数 Java Collections Framework 基类和接口的重新实现,以牺牲一些内存大小和使用安全性为代价,专注于高性能和低内存分配。 警告:除非你真的需要,否则不要使用这个库。 ...
下面小编就为大家带来一篇python 接口_从协议到抽象基类详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本课程以C++编程为导向来详细介绍Qt编程,课程包括十四个部分,分别介绍Qt的编程环境、窗体应用、控件应用、组件应用、文件操作、图形图像操作、多媒体应用、对系统操作、对注册表操作、数据库应用,网络应用开发、...
声明抽象基类最简单的方式是继承 abc.ABC 或其他抽象基类。类旧版 Pythonmetaclass= 关键字参数是性把值设为 abc.在函数上堆叠装饰器的顺
feign-reactor-core :应该允许实现替代React堆Feign的基类和接口 feign-reactor-webclient :基于Spring WebClient的React堆Feign的实现 feign-reactor-cloud :FeignReact堆的Spring Cloud实现(Ribbon / Hystrix...
该库通过提供默认实现,可扩展的基类和接口以及不变的默认实现,为开发人员创建,处理和比较不同类型的变体提供了一致的API,开发人员可以利用这些默认实现从最少的代码中获得最大的实用性,而不必解决问题在生物...
splot-base :提供Splot对象模型的基类和接口。 splot-processor :用于处理特征定义的注释处理器。 splot-traits :一组标准的已定义特征。 splot-local :用于实现本地事物以及本地技术实现的类。 smcp :一...
凭据的基类和接口 :包含 App Engine 凭据。 此工件取决于 App Engine SDK。 :包含各种凭据以及创建它们和获取应用程序默认凭据的实用方法 注意:此客户端仍在开发中,可能偶尔会进行向后不兼容的更改。 快速开始 ...
(3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类 (4) 具体派生类必须覆盖基类的抽象方法 (5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,...