1、Java程序设计精编教程程序设计精编教程 第第7章章接口与实现接口与实现 2010-8-11导读导读主要内容主要内容接口接口实现接口实现接口理解接口理解接口接口回调接口回调接口与多态接口与多态接口变量做参数接口变量做参数面向接口编程面向接口编程2010-8-127.1 接口接口 为为了了克克服服JavaJava单单继继承承的的缺缺点点,JavaJava使使用用了了接接口口,一个类可以实现多个接口。一个类可以实现多个接口。使使用用关关键键字字interfaceinterface来来定定义义一一个个接接口口。接接口口的的定义和类的定义很相似,分为接口的声明和接口体。定义和类的定义很相似,分为接口的
2、声明和接口体。interface Printable final int MAX=100;void add();float sum(float x,float y);1接口声明接口声明 接口通过使用关键字接口通过使用关键字interfaceinterface来声明,格式:来声明,格式:interface interface 接口的名字接口的名字 2接口体接口体 接口体中包含常量定义和方法定义两部分。接口体中包含常量定义和方法定义两部分。2010-8-137.2 实现实现接口接口 一一个个类类通通过过使使用用关关键键字字implementsimplements声声明明自自己己实实现现一一个个或或
3、多多个个接口。接口。class A implements Printable,Addable 如如果果一一个个类类实实现现了了某某个个接接口口,那那么么这这个个类类必必须须重重写写该该接接口口的的所有方法所有方法。JavaJava提提供供的的接接口口都都在在相相应应的的包包中中,通通过过importimport语语句句不不仅仅可可以引入包中的类,也可以引入包中的接口,例如以引入包中的类,也可以引入包中的接口,例如:import java.io.*;不仅引入了不仅引入了java.java.ioio包中的类,也同时引入了该包中的接口。包中的类,也同时引入了该包中的接口。例例1 1 2010-8-1
4、47.3 理解接口理解接口 接接口口可可以以增增加加很很多多类类都都需需要要具具有有的的功功能能,不不同同的的类类可可以以实实现现相相同同的的接接口口,同同一一个个类类也也可可以实现多个接口。以实现多个接口。接口只关心操作,并不关心操作的具体实现接口只关心操作,并不关心操作的具体实现 接接口口的的思思想想在在于于它它可可以以增增加加很很多多类类都都需需要要具具有有的的功功能能,而而且且实实现现相相同同的的接接口口类类不不一一定定有有继继承关系。承关系。2010-8-157.4 接口的接口的UMLUML图图 表表示示接接口口的的UMLUML图图和和表表示示类类的的UMLUML图图类类似似,使使用
5、用一一个个长长方方形形描描述述一一个个接接口口的的主主要要构构成成,将将长长方形垂直地分为三层。方形垂直地分为三层。第第1 1层层是是名名字字层层、第第2 2层层是是常常量量层层、第第3 3层层是是方方法层法层 。2010-8-167.5 接口回调接口回调 接接口口回回调调是是指指:可可以以把把实实现现某某一一接接口口的的类类创创建建的的对对象象的的引引用用赋赋给给该该接接口口声声明明的的接接口口变变量量中中,那那么么该该接接口口变变量量就就可可以以调调用用被被类类重重写写的的接接口口方方法法。实实际际上上,当当接接口口变变量量调调用用被被类类重重写写的的接接口口方法时,就是通知相应的对象调用
6、这个方法。方法时,就是通知相应的对象调用这个方法。例例2 22010-8-177.6 接口与多态接口与多态 可可以以通通过过在在接接口口中中声声明明若若干干个个abstractabstract方方法法,表表明明这这些些方方法法的的重重要要性性,方方法法体体的的内内容容细细节节由由实实现现接接口口的的类类去去完完成成。使使用用接接口口进进行行程程序序设设计计的的核核心心思思想想是是使使用用接接口口回回调调,即即接接口口变变量量存存放放实实现现该该接接口口的的类类的的对对象象的的引引用用,从从而而接接口口变变量量就就可可以以回回调调类类实实现现的的接口方法。接口方法。例例3 32010-8-187
7、.7 接口变量做参数接口变量做参数 如如果果一一个个方方法法的的参参数数是是接接口口类类型型,我我们们就就可可以以将将任任何何实实现现该该接接口口的的类类的的实实例例的的引引用用传传递递给给该该接接口口参参数数,那那么么接口参数就可以回调类实现的接口方法。接口参数就可以回调类实现的接口方法。例例4 42010-8-197.8 abstractabstract类与接口的比较类与接口的比较 接口和接口和abstract类的比较如下:类的比较如下:1abstract类和接口都可以有类和接口都可以有abstract方法。方法。2接接口口中中只只可可以以有有常常量量,不不能能有有变变量量;而而abstr
8、act类类中中即可以有常量也可以有变量。即可以有常量也可以有变量。3abstract类中也可以有非类中也可以有非abstract方法方法,接口不可以。接口不可以。2010-8-1107.9 面向接口编程面向接口编程 面面向向接接口口去去设设计计程程序序,可可以以通通过过在在接接口口中中声声明明若若干干个个abstract方方法法,表表明明这这些些方方法法的的重重要要性性,方方法法体体的的内内容容细细节由实现接口的类去完成。节由实现接口的类去完成。使使用用接接口口进进行行程程序序设设计计的的核核心心思思想想是是使使用用接接口口回回调调,即即接接口口变变量量存存放放实实现现该该接接口口的的类类的的对对象象的的引引用用,从从而而接接口口变变量量就就可可以以回回调调类类实实现现的的接口方法。接口方法。例例52010-8-111