快速业务通道

Java编程那些事儿69——抽象类和接口(二) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
数据*/  public abstract byte[] readData();  /**写入数据*/  public abstract void writeData(byte[] data); }

该接口中规定电压常量为5V,声明了两个方法,要求实现USB时必须实现这样两个方法,至于如何实现这里不做规定。这样这个数据类型就只是设计上的说明,而不牵扯具体的实现,这样在项目中使用时则比较通用。

从这点来看,接口类似于现实中使用的各个国家标准,标准中只规定该类型最终需要达到的标准,而不规定如何实现,各个厂商可以根据自己的产品工艺实现该要求即可。

在实际的项目中,设计接口需要对于项目的整体有比较深刻的了解和认识,这样才可以设计出需要的接口结构,关于接口的设计这里不作太深入的论述。如果需要更深刻的了解设计的结构,可以参阅OReilly的《Designing.Interfaces》一书。

接口设计完成以后,还需要再项目中实现接口规范中对应的要求,一般声明对应的类来实现接口,实现接口的语法为:

访问控制符 [修饰符] class 类名 [extends 父类名] implements 父接口名1,父接口名2……

实现接口的语法位于类声明中,位于继承声明的后面,使用implements关键字代表实现,后续是需要实现的接口的名称,一个类可以实现任意多个接口。

实现接口和继承类很类似,声明的类称作接口的子类,接口为该类的父接口,子类中继承父接口中所有的数据和方法,因为接口中所有的方法都是抽象方法,所以如果子类中不实现(覆盖)父接口中的方法,则该类必须声明为抽象类。

例如计算机实现了USB接口,则示例代码如下:

public class Computer implements USB{  /**内存容量*/  int memorySize;  public abstract byte[] readData(){   //读数据的逻辑  }    public abstract void writeData(byte[] data){   //写数据的逻辑  } }

Java编程那些事儿69——抽象类和接口(二)(3)

时间:2010-03-11 csdn 陈跃峰

这里,Computer类实现了前面的USB接口,在Computer类内部可以书写和Computer类相关的属性、方法和构造方法,这里对于实现接口没有影响,而因为实现了USB接口,则必须覆盖USB接口中的readData和writeData抽象方法,至于方法内部的代码,则根据逻辑的需要进行实现,从而实现接口中要求实现的功能。

类似的,也可以使一个数码相机实现USB接口,则实现的示例代码为:

public class DigitalCamera implements USB{  /**厂商名称*/  String vendorName;  public abstract byte[] readData(){   //读数据的逻辑  }  public abstract void writeData(byte[] data){   //写数据的逻辑  } }

在该类中,也可以根据该类的需要实现USB接口中规定的功能,至于如何实现则很可能和Computer类不同。

这样,虽然Computer类和DigitalCamera类自身原来的功能不同,但是都可以通过实现USB接口而实现同样的功能,这样单纯的从是否支持USB功能来看,这两个类的实现是一样的。按照面向对象的术语来说,这被称作屏蔽了类的类型之间的不同,保证了程序的通用性。

由于实现接口时,不限制实现的接口的数量,则任何一个类都可以实现任意多个接口,这样就使类的通用性获得了极大的增强,很方便类的对象之间的匹配。就像现实中USB接口规范方便了多种不同设备之间的互联一样。

在语法上,实现了接口的对象可以使用子类的构造方法进行创建,这样又很适合多态的结构,可以说接口的出现,使多态的特性更容易的进行实现。

在实际项目中,通过使用一定的接口,使得很多类的对象在实现某种类型的功能时,方法的声明是统一的,便于程序的调用和管理,利于程序项目的扩展。所以在现在的面向对象编程领域中,存在着另外的一个方向——面向接口的编程,其实很多Java的技术都

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号