本文是一篇接口论文范文,接口方面毕业论文开题报告范文,关于Ja程序设计中的接口相关硕士论文范文。适合接口及数据结构及计算机应用方面的的大学硕士和本科毕业论文以及接口相关开题报告范文和职称论文写作参考文献资料下载。
摘 要:Ja语言提供了一种接口(interface)机制.“接口(interface)比抽象(abstract)的概念更进了一步.你可以把一个接口看成是一个纯的抽象类.”这种接口机制使Ja的面向对象编程变得更加灵活.用接口来定义一个类的表现形式.
关 键 词:Ja,interface,abstract
理解并用好接口机制将帮助我们更好的掌握Ja这种面向对象的编程语言.下面我们来讨论一下接口的使用规则以及相关的应用.
1.接口的定义及实现
定义接口和定义类相似,只是要把class关键字换为interface.定义方法时只需要方法名,返回类型和参数列表,不能有方法体.接口中可以定义字段,这些字段都被暗指为static和final,因此应该根据需要先定好这些字段的值.例如:
publicinterfaceFlyable{
voidfly(),
}
publicinterfaceTalkable{
voidtalk(),
}
publicinterfaceMessage{
intMAX_SIZE等于4096,
StringgetMessage(),
}
上面定义的几个接口中,Flyable和Talkable只定义了一个方法,而Message里除了方法外还有一个字段MAX_SIZE.可以看出这些接口只定义了类的表现形式,而不包含任何实现,所以不能直接使用.要使用这些接口就需要有相应的类去实现它们.实现接口时应该先在类名后用implements关键字申明将要实现的接口,如果要实现多个接口,应该用逗号将它们隔开,然后一一实现这些接口中定义的方法.如下面的例子:
publicclassParrotimplementsFlyable,Talkable{
publicvoidfly(){
System.out.println("Flyinglikeaparrot等"),
}
publicvoidtalk(){
System.out.println("Hello!Iamaparrot!"),
}
}
publicclassTextMessageimplementsMessage{
Stringmessage,
publicvoidsetMessage(Stringmsg){
message等于msg,
if(message.length()>MAX_SIZE)
message等于message.substring(0,MAX_SIZE),
}
publicStringgetMessage(){
returnmessage,
}
}
在Parrot(鹦鹉)例子中,我们用接口Flyable来表示飞行能力,Talkable表示说话能力,但它们并不包含具体实现.而Parrot同时具有这两种能力,所以我们为Parrot类同时实现了Flyable和Talkable这两个接口.同样我们还可以定义一个Swallow(燕子)类,但燕子只有飞行能力,所以我们只需要为Swallow实现Flyable就行了.因为它们各自的的飞行方法有所不同,所以它们有各自关于飞行的具体实现.
另外,正因为一个类可以同时实现多个接口,使得Ja的面向对象特性变得非常灵活.运用这种特性,我们可以实现类似C++语言中多继承那样的特性,甚至更灵活的一些特性.下面我们来讨论一下接口在实际中的应用.
2.用接口来定义一些全局变量
因为接口内的字段都是static和final的,所以我们可以很方便的利用这一点来创建一些常量.例如:
publicinterfaceConstants{
StringROOT等于"/root",
intMAX_COUNT等于200,
intMIN_COUNT等于100,
}
在使用时可以直接用Constants.ROOT这样的形式来引用其中的常量.我们还可以用下面这种方法来创建初始值不确定的常量.
publicinterfaceRandomColor{
intred等于Math.random()*255,
intgreen等于Math.random()*255,
intblue等于Math.random()*255,
}
其中red、green和blue的值会在第一次被访问时建立,然后保持不变.
3.用接口来定义基本数据结构
在设计一套软件系统的初期,我们可以用接口来对一些基本数据元素的特性来进行一些描述,再根据需要进行不同的实现.请大家看看下面这个例子:
publicinterfaceUser{
intgetAge(),
StringgetName(),
StringgetPassword(),
}
publicclassXMLUserimplementsUser{
//这里用XML技术实现User接口中的方法
publicintgetAge(){...}
publicStringgetName(){...}
publicStringgetPassword(){...}
}
publicabstractclassUserFactory{
publicstaticUserFactorygetUserFactory(){
returnnewXMLUserFactory(),
}
publicUsergetUser(Stringname),
publicUsergetAdmin(),
publicUsercreateUser(Stringname,Stringpassword,intage),
publicvoidaddUser(Useruser),
publicvoiddelUser(Useruser),
}
publicclassXMLUserFactoryextendsUserFactory{
//这里用XML技术实现的UserFactory的抽象方法
}
在这个例子中,我们定义了一个接口User和一个抽象类UserFactory.然后我们用XML技术实现这两个类.可以看出,我们只需要从用UserFactory的getUserFactory()就可以得到一个UserFactory的实例,而不用去考虑这个实例的具体实现方法.通过UserFactory的这个实例我们还可以直接得到User的实例,也不用去考具体的实现方法.
如果我们决定用JDBC技术来实现User和UserFactory,我们只需要按上面的形式实现JDBCUser和JDBCUserFactory就行了.然后把UserFactory中的getUserFactory方法修改一下就可以改变了它们的实现方法.而我们已经写好的调用UserFactory和User的部分不需要做任何修改.
这是用接口来定义数据结构的一个简单的例子,在实际应用中还有很多灵活的使用方法,大家需要在学习过程中不断的去体会.
4.理解分布式应用的原理
目前有很多软件项目都使用了分布式的技术.Ja有多种支持分布式应用的技术,早期用的比较多的有RMI、CORBA等技术,而现在EJB技术更为流行一些.但这些技术不管怎么发展,其实都是以接口为基础的.
以远程方法调用RMI(RemoteMethodInvocation)为例.在编写RMI应用时,我们需要做两件最基本的事,首先要定义一个接口,这个接口要继承ja.rmi.Remote接口,这个接口中应该包含你要从远端调用的方法名.接下来就是写一个类来实现这个接口中的方法.例如:
publicinterfaceProductextendsja.rmi.Remote{
StringgetName()throwsja.rmi.RemoteException,
}
publicclassProductImplimplementsProduct{
Stringname,
publicProductImpl(Stringn){
name等于n,
}
publicStringgetName()throwsja.rmi.RemoteException{
returnname,
}
}
在这个例子中,接口Product是放在客户端的,而ProductImpl是放在服务器端的,客户在使用时只需要用指定的规则得到Product的实例就行了,不用去考虑Product接口里的方法是如何实现的.在定义好这两个类后,用Ja开发包命令“rmicProductImpl”就可以帮助我们自动生成两个类ProductImpl_Skel和ProductImpl_Stub.这两个类就包含了RMI调用的运作机制.有兴趣的朋友可以把这两个类反编译后研究一下.你会发现其中ProductImpl_Stub实际上是接口Product的一个实现类.RMI机制就是用这个类来生成Product的实例供客户端使用.另一个类ProductImpl_Skel则是在服务端响应ProductImpl_Stub的调用请求的类.而RMI最底层的通讯原理则是利用ObjectInputStream和ObjetOutputStream通过Socket将要调用的方法名及参数列表传到服务器端,服务器端再通过特定的方法调用实现类(在本例中是ProductImpl)的对应方法,然后将结果通过Socket传回客户端就行了.由于Skel和Stub类是用工具生成的,所以就大大节省了开发的时间.另外,如果我们需要修改一些实现方法或错误,只需要对服务器端的实现类进行修改就可以了,也就是说这种分布式应用的大部分维护工作在服务器端就可以完成.
现在越来越多的应用使用了EJB这种技术.EJB是从RMI发展而来的一项技术,它比RMI定义得更加完善,可以获得更好的面向对象的特性.但它的规则要比RMI复杂一些.但是不管它多复杂,它同样是使用了接口来定义各种不同的Bean,也同样需要编写相应的实现类来完成具体的功能,最后还要通过Socket来进行通讯.EJB的运作机制本身有一定的复杂性,所以其应用的效率理所当然就会受到一定的影响.因此在选择开发技术时应该根据应用的规模和特点仔细考虑,不一定流行的技术就一定能适应你的应用.如果你很好的掌握了面向对象的设计原则,你就可以自行设计.也许你可以根据自己应用的特点设计出更合适的分布式应用结构.
5.结论
除了上述的一些应用外,还有很多地方可以使用接口,比如在Ja的事件机制中就常用到接口.另外,对于一些已经开发好的系统,在结构上进行较大的调整已经不太现实,这时可以通过定义一些接口并追加相应的实现来完成功能结构的扩展.
总之,学好接口可以帮助我们更好的理解和运用面向对象的设计原则.使我们能设计出更好的软件系统.