第7章接口与实现

上传人:cn****1 文档编号:587505784 上传时间:2024-09-06 格式:PPT 页数:22 大小:165.02KB
返回 下载 相关 举报
第7章接口与实现_第1页
第1页 / 共22页
第7章接口与实现_第2页
第2页 / 共22页
第7章接口与实现_第3页
第3页 / 共22页
第7章接口与实现_第4页
第4页 / 共22页
第7章接口与实现_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《第7章接口与实现》由会员分享,可在线阅读,更多相关《第7章接口与实现(22页珍藏版)》请在金锄头文库上搜索。

1、第第7章章 接口与实现接口与实现 Java 不支持多继承性不支持多继承性,即一个类只能有一个即一个类只能有一个父类。父类。单继承性使得单继承性使得Java 简单,易于管理程序。为简单,易于管理程序。为了克服单继承的缺点,了克服单继承的缺点,Java使用了接口,一个类可使用了接口,一个类可以实现多个接口。以实现多个接口。 使用关键字使用关键字interface 来定义一个接口。接口的来定义一个接口。接口的定义和类的定义很相似,分为接口的声明和接口体。定义和类的定义很相似,分为接口的声明和接口体。9/6/20241信息学院7.1.1 接口的声明与使用接口的声明与使用(1)接口声明)接口声明 接口通

2、过使用关键字接口通过使用关键字interface 来声明来声明 interface 接口的名字接口的名字(2)接口体)接口体 接口体中包含常量定义和方法定义两部分。接口体中包含常量定义和方法定义两部分。接口接口体中只进行方法的声明体中只进行方法的声明,不许提供方法的实现不许提供方法的实现,所,所以方法的定义没有方法体,且用分号结尾。以方法的定义没有方法体,且用分号结尾。7.1 接口接口9/6/20242信息学院例:例:interface Runner public static final int id=1; public void start( ); public void run( );

3、public void stop( ); 7.1 接口接口9/6/20243信息学院(3)接口的使用)接口的使用 一一个个类类通通过过使使用用关关键键字字implements 声声明明自自己己使使用用一一个个或或多多个个接接口口。如如果果使使用用多多个个接接口口,用用逗号隔开接口名。逗号隔开接口名。如:如:class A implements Printable,Addable class Dog extends Animal implements Eatable,Sleepable7.2 实现接口实现接口9/6/20244信息学院7.2 实现接口实现接口 如如果果一一个个类类使使用用了了某某

4、个个接接口口,那那么么这这个个类类必必须须实实现该接口的所有方法,即为这些方法提供方法体。现该接口的所有方法,即为这些方法提供方法体。 需需要要注注意意的的是是在在类类中中实实现现接接口口的的方方法法时时,方方法法的的名名字字、返返回回类类型型、参参数数个个数数及及类类型型必必须须与与接接口口中中的的完完全一致。全一致。 特特别别要要注注意意的的是是接接口口中中的的方方法法被被默默认认是是public 的的,所以类在实现接口方法时一定要用所以类在实现接口方法时一定要用public 来修饰。来修饰。9/6/20245信息学院 如果接口的方法的返回类型不是如果接口的方法的返回类型不是void 的,

5、那么在的,那么在类中实现该接口方法时,方法体至少要有一个类中实现该接口方法时,方法体至少要有一个return 语句。如果是语句。如果是void 型,类体除了两个大括号外,也可型,类体除了两个大括号外,也可以没有任何语句。以没有任何语句。 7.2 实现接口实现接口 Java 为为我我们们提提供供的的接接口口都都在在相相应应的的包包中中,通通过过引引入入包包可可以以使使用用Java 提提供供的的接接口口。也也可可以以自自己己定定义义接接口口,一个一个java源文件就是由类和接口组成的。源文件就是由类和接口组成的。9/6/20246信息学院例:例:import java.applet.*;impor

6、t java.awt.*; interface Computable final int MAX=100; void speak(String s); int f(int x); float g(float x,float y); class China implements Computable int xuehao; public int f(int x) /不要忘记不要忘记public关键字关键字. int sum=0; for(int i=1;i=x;i+) sum=sum+i; return sum; 9/6/20247信息学院 public float g(float x,floa

7、t y) return 6; /至少有至少有return语句语句. public void speak(String s) class Japan implements Computable int xuehao; public int f(int x) return 68; public float g(float x,float y) return x+y; 9/6/20248信息学院 public void speak(String s) public class Example4_26 extends Applet China Li; Japan Henlu; public void

8、init() Li=new China(); Henlu=new Japan(); Li.xuehao=991898; Henlu.xuehao=941448; 9/6/20249信息学院 public void paint(Graphics g)g.drawString(xuehao:+Li.MAX+Li.xuehao+从从1到到100 求和求和+Li.f(100),10,20);g.drawString(xuehao:+Henlu.MAX+Henlu.xuehao+加法加法+Henlu.g(2.0f,3.0f),10,40); 注:注:如果一个类声明实现一个接口,但没有实现接口如果一个类声

9、明实现一个接口,但没有实现接口中的所有方法,那么这个类必须是中的所有方法,那么这个类必须是 abstract 类。类。9/6/202410信息学院 接口的语法规则很容易记住,但真正理解接口更接口的语法规则很容易记住,但真正理解接口更重要。你可能注意到,在上述例子重要。你可能注意到,在上述例子26 中如果去掉接口,中如果去掉接口,并把程序中的并把程序中的Li.MAX,Henlu.MAX 去掉,上述程序去掉,上述程序的运行没有任何问题。那为什么要用接口呢?的运行没有任何问题。那为什么要用接口呢? 7.3 理解接口理解接口9/6/202411信息学院 假假如如轿轿车车、卡卡车车、拖拖拉拉机机、摩摩托

10、托车车、客客车车都都是是机机动动车车的的子子类类,其其中中机机动动车车是是一一个个抽抽象象类类。如如果果机机动动车车中中有有一一个个抽抽象象方方法法 “收收取取费费用用”,那那么么所所有有的的子子类类都都要要实实现现这这个个方方法法,即即给给出出方方法法体体,产产生生各各自自的的收收费费行行为为。这这显显然然不不符符合合人人们们的的思思维维方方法法,因因为为拖拖拉拉机机可可能能不不需需要要有有”收收取取费费用用”的的功功能能,而而其其他他的的一一些些类类,比如飞机、轮船等可能也需要具体实现比如飞机、轮船等可能也需要具体实现”收取费用收取费用”。7.3 理解接口理解接口9/6/202412信息学

11、院 接接口口可可以以增增加加很很多多类类都都需需要要实实现现的的功功能能,不不同同的的类类可可以以使使用用相相同同的的接接口口,同同一一个个类类也也可可以以实实现现多多个接口。个接口。7. 3 理解接口理解接口接口只关心功能,并不关心功能的具体实现接口只关心功能,并不关心功能的具体实现。 比比如如“客客车车类类”实实现现一一个个接接口口,该该接接口口中中有有一一个个“收收取取费费用用”的的方方法法,那那么么这这个个“客客车车类类”必必须须具具体体给给出出怎怎样样收收取取费费用用的的操操作作,即即给给出出方方法法的的方方法法体体,不不同同车车类类都都可可以以实实现现“收收取取费费用用”,但但“收

12、收取取费用费用”的手段可能不相同。的手段可能不相同。9/6/202413信息学院7.3 理解接口理解接口 接接口口的的思思想想在在于于它它可可以以增增加加很很多多类类都都需需要要实实现现的的功能,使用相同的接口类不一定有继承关系。功能,使用相同的接口类不一定有继承关系。注注:接接口口声声明明时时,如如果果关关键键字字interface 前前面面加加上上public 关关键键字字,就就称称这这样样的的接接口口是是一一个个public 接接口口,public 接口可以被任何一个类使用接口可以被任何一个类使用。 如如果果一一个个接接口口不不加加public 修修饰饰,就就称称做做友友好好接接口口类,

13、类,友好接口可以被同一包中的类使用友好接口可以被同一包中的类使用。9/6/202414信息学院7.4 接口的接口的UML图图 表表示示接接口口的的UML图图和和表表示示类类的的UML图图类类似似,使使用用一一个个长长方方形形描描述述一一个个接接口口的的主主要要构构成成,将将长长方方形形垂垂直直地分为三层。地分为三层。 第第1层层是是名名字字层层、第第2层层是是常常量量层层、第第3层层是是方方法法层层 。 接口回调是指可以把实现某一接口的类创建的对接口回调是指可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。象的引用赋给该接口声明的接口变量中。 那么该接口变量就可以调用被类实现的

14、接口中的那么该接口变量就可以调用被类实现的接口中的方法。实际上,当接口变量调用被类实现的接口中的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法。方法时,就是通知相应的对象调用接口的方法。7.5 接口回调接口回调9/6/202416信息学院例:例:interface ShowMessage void 显示商标显示商标(String s); class TV implements ShowMessage public void 显示商标显示商标(String s) System.out.println(s); class PC implements Show

15、Message public void 显示商标显示商标(String s) System.out.println(s); 7.5 接口回调接口回调9/6/202417信息学院public class Example4_28 public static void main(String args) ShowMessage sm; sm=new TV(); sm.显示商标显示商标(长城牌电视机长城牌电视机); sm=new PC(); sm.显示商标显示商标(联想奔月联想奔月5008PC机机); 7.5 接口回调接口回调9/6/202418信息学院7.7 接口变量做参数接口变量做参数如如果果一一

16、个个方方法法的的参参数数是是接接口口类类型型,就就可可以以将将任任何何实实现现该该接接口口类类的的实实例例的的引引用用传传递递给给该该接接口口参参数数,那那么么接接口口参数就可以回调类实现的接口方法。参数就可以回调类实现的接口方法。9/6/202419信息学院7.6 7.6 接口与多态接口与多态 可可以以通通过过在在接接口口中中声声明明若若干干个个abstract方方法法,表表明明这这些些方方法法的的重重要要性性,方方法法体体的的内内容容细细节节由由实实现现接接口口的的类类去去完完成成。使使用用接接口口进进行行程程序序设设计计的的核核心心思思想想是是使使用用接接口口回回调调,即即接接口口变变量

17、量存存放放实实现现该该接接口口的的类类的的对对象象的的引引用用,从从而而接接口口变变量量就就可可以以回回调调类类实实现现的的接口方法。接口方法。 例例37.8 abstract7.8 abstract类与接口的比较类与接口的比较 接口和接口和abstract类的比较如下:类的比较如下:1abstract类和接口都可以有类和接口都可以有abstract方法。方法。2接接口口中中只只可可以以有有常常量量,不不能能有有变变量量;而而abstract类类中中即可以有常量也可以有变量。即可以有常量也可以有变量。3abstract类中也可以有非类中也可以有非abstract方法方法,接口不可以。接口不可以。 7.9 7.9 面向接口编程面向接口编程 面面向向接接口口去去设设计计程程序序,可可以以通通过过在在接接口口中中声声明明若若干干个个abstract方方法法,表表明明这这些些方方法法的的重重要要性性,方方法法体体的的内内容容细节由实现接口的类去完成。细节由实现接口的类去完成。 使使用用接接口口进进行行程程序序设设计计的的核核心心思思想想是是使使用用接接口口回回调调,即即接接口口变变量量存存放放实实现现该该接接口口的的类类的的对对象象的的引引用用,从从而而接接口口变变量量就就可可以以回回调调类类实实现现的的接口方法。接口方法。 例例5

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号