




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第7章章 接口与实现接口与实现 Java 不支持多承继性,即一个类只能有一个父类。单承继性使得Java 简单,易于管理程序。为了抑制单承继的缺陷,Java运用了接口,一个类可以实现多个接口。 运用关键字interface 来定义一个接口。接口的定义和类的定义很类似,分为接口的声明和接口体。7.1.1 接口的声明与运用接口的声明与运用1接口声明接口声明 接口经过运用关键字接口经过运用关键字interface 来声明来声明 interface 接口的名字接口的名字2接口体接口体 接口体中包含常量定义和方法定义两部分。接口接口体中包含常量定义和方法定义两部分。接口体中只进展方法的声明,不许提供方法
2、的实现,所体中只进展方法的声明,不许提供方法的实现,所以方法的定义没有方法体,且用分号结尾。以方法的定义没有方法体,且用分号结尾。7.1 接口接口例:例:interface Runner public static final int id=1; public void start( ); public void run( ); public void stop( ); 7.1 接口接口3接口的运用接口的运用 一个类经过运用关键字一个类经过运用关键字implements 声明本声明本人运用一个或多个接口。假设运用多个接口,用人运用一个或多个接口。假设运用多个接口,用逗号隔开接口名。逗号隔开接口
3、名。如:如:class A implements Printable,Addable class Dog extends Animal implements Eatable,Sleepable7.2 实现接口实现接口7.2 实现接口实现接口 假设一个类运用了某个接口,那么这个类必需实假设一个类运用了某个接口,那么这个类必需实现该接口的一切方法,即为这些方法提供方法体。现该接口的一切方法,即为这些方法提供方法体。 需求留意的是在类中实现接口的方法时,方法的需求留意的是在类中实现接口的方法时,方法的名字、前往类型、参数个数及类型必需与接口中的完名字、前往类型、参数个数及类型必需与接口中的完全一致。
4、全一致。 特别要留意的是接口中的方法被默许是特别要留意的是接口中的方法被默许是public 的,的,所以类在实现接口方法时一定要用所以类在实现接口方法时一定要用public 来修饰。来修饰。 假设接口的方法的前往类型不是假设接口的方法的前往类型不是void 的,那么在的,那么在类中实现该接口方法时,方法体至少要有一个类中实现该接口方法时,方法体至少要有一个return 语句。假设是语句。假设是void 型,类体除了两个大括号外,也可型,类体除了两个大括号外,也可以没有任何语句。以没有任何语句。 7.2 实现接口实现接口 Java 为我们提供的接口都在相应的包中,经过引为我们提供的接口都在相应的
5、包中,经过引入包可以运用入包可以运用Java 提供的接口。也可以本人定义接口,提供的接口。也可以本人定义接口,一个一个java源文件就是由类和接口组成的。源文件就是由类和接口组成的。例:例:import java.applet.*;import 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
6、x) /不要忘记不要忘记public关键字关键字. int sum=0; for(int i=1;i=x;i+) sum=sum+i; return sum; public float g(float x,float 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; public void spe
7、ak(String s) public class Example4_26 extends Applet China Li; Japan Henlu; public void init() Li=new China(); Henlu=new Japan(); Li.xuehao=991898; Henlu.xuehao=941448; 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.
8、xuehao+加法+Henlu.g(2.0f,3.0f),10,40); 注:假设一个类声明实现一个接口,但没有实现接口中的一切方法,那么这个类必需是 abstract 类。 接口的语法规那么很容易记住,但真正了解接口接口的语法规那么很容易记住,但真正了解接口更重要。他能够留意到,在上述例子更重要。他能够留意到,在上述例子26 中假设去掉接中假设去掉接口,并把程序中的口,并把程序中的Li.MAX,Henlu.MAX 去掉,上述去掉,上述程序的运转没有任何问题。那为什么要用接口呢?程序的运转没有任何问题。那为什么要用接口呢? 7.3 了解接口了解接口 假设轿车、卡车、迁延机、摩托车、客车都是机假
9、设轿车、卡车、迁延机、摩托车、客车都是机动车的子类,其中机动车是一个笼统类。假设机动车动车的子类,其中机动车是一个笼统类。假设机动车中有一个笼统方法中有一个笼统方法 “收取费用,那么一切的子类都收取费用,那么一切的子类都要实现这个方法,即给出方法体,产生各自的收费行要实现这个方法,即给出方法体,产生各自的收费行为。这显然不符合人们的思想方法,由于迁延机能够为。这显然不符合人们的思想方法,由于迁延机能够不需求有收取费用的功能,而其他的一些类,比不需求有收取费用的功能,而其他的一些类,比如飞机、轮船等能够也需求详细实现收取费用。如飞机、轮船等能够也需求详细实现收取费用。7.3 了解接口了解接口 接
10、口可以添加很多类都需求实现的功能,不同接口可以添加很多类都需求实现的功能,不同的类可以运用一样的接口,同一个类也可以实现多的类可以运用一样的接口,同一个类也可以实现多个接口。个接口。7. 3 了解接口了解接口接口只关怀功能,并不关怀功能的详细实现。接口只关怀功能,并不关怀功能的详细实现。 比如比如“客车类实现一个接口,该接口中有一个客车类实现一个接口,该接口中有一个“收取费用的方法,那么这个收取费用的方法,那么这个“客车类必需详细客车类必需详细给出怎样收取费用的操作,即给出方法的方法体,给出怎样收取费用的操作,即给出方法的方法体,不同车类都可以实现不同车类都可以实现“收取费用,但收取费用,但“
11、收取费用收取费用的手段能够不一样。的手段能够不一样。7.3 了解接口了解接口 接口的思想在于它可以添加很多类都需求实现的接口的思想在于它可以添加很多类都需求实现的功能,运用一样的接口类不一定有承继关系。功能,运用一样的接口类不一定有承继关系。注:接口声明时,假设关键字注:接口声明时,假设关键字interface 前面加上前面加上public 关键字,就称这样的接口是一个关键字,就称这样的接口是一个public 接口,接口,public 接口可以被任何一个类运用。接口可以被任何一个类运用。 假设一个接口不加假设一个接口不加public 修饰,就称做友好接修饰,就称做友好接口类,友好接口可以被同一
12、包中的类运用。口类,友好接口可以被同一包中的类运用。7.4 接口的接口的UML图图 表示接口的表示接口的UML图和表示类的图和表示类的UML图类似,图类似,运用一个长方形描画一个接口的主要构成,将运用一个长方形描画一个接口的主要构成,将长方形垂直地分为三层。长方形垂直地分为三层。 第第1层是名字层、第层是名字层、第2层是常量层、第层是常量层、第3层是方层是方法层法层 。 接口回调是指可以把实现某一接口的类创建的对接口回调是指可以把实现某一接口的类创建的对象的援用赋给该接口声明的接口变量中。象的援用赋给该接口声明的接口变量中。 那么该接口变量就可以调用被类实现的接口中的那么该接口变量就可以调用被
13、类实现的接口中的方法。实践上,当接口变量调用被类实现的接口中的方法。实践上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法。方法时,就是通知相应的对象调用接口的方法。7.5 接口回调接口回调例:例:interface ShowMessage void 显示商标显示商标(String s); class TV implements ShowMessage public void 显示商标显示商标(String s) System.out.println(s); class PC implements ShowMessage public void 显示商标显示商标(St
14、ring s) System.out.println(s); 7.5 接口回调接口回调public class Example4_28 public static void main(String args) ShowMessage sm; sm=new TV(); sm.显示商标显示商标(长城牌电视机长城牌电视机); sm=new PC(); sm.显示商标显示商标(联想奔月联想奔月5008PC机机); 7.5 接口回调接口回调7.7 接口变量做参数接口变量做参数假设一个方法的参数是接口类型,就可以将任何实现假设一个方法的参数是接口类型,就可以将任何实现该接口类的实例的援用传送给该接口参数,
15、那么接口该接口类的实例的援用传送给该接口参数,那么接口参数就可以回调类实现的接口方法。参数就可以回调类实现的接口方法。7.6 7.6 接口与多态接口与多态 可以经过在接口中声明假设干个可以经过在接口中声明假设干个abstract方方法,阐明这些方法的重要性,方法体的内容法,阐明这些方法的重要性,方法体的内容细节由实现接口的类去完成。运用接口进展细节由实现接口的类去完成。运用接口进展程序设计的中心思想是运用接口回调,即接程序设计的中心思想是运用接口回调,即接口变量存放实现该接口的类的对象的援用,口变量存放实现该接口的类的对象的援用,从而接口变量就可以回调类实现的接口方法。从而接口变量就可以回调类实现的接口方法。 例例37.8 abstract7.8 abstract类与接口的比较类与接口的比较 接口和接口和abstract类的比较如下:类的比较如下:1abstract类和接口都可以有类和接口都可以有abstract方法。方法。2接口中只可以有常量接口中只可以有常量,不能有变量;而不能有变量;而abstract类中类中即可以有常量也可以有变量。即可以有常量也可以有变量。3abstract类中也可以有非类中也可以有非abstract方法方法,接口不可以。接口不可以。 7.9 7.9 面向接口编程面向接口编程 面向接口去设计程序,可面向接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 请示整改报告范文
- HCIA路由交换技术实战(微课版)-课后习题答案
- 二零二五年度正规欠款合同范本:商业保理业务合作协议
- 二零二五养老院院民文化参观出行合作协议
- 二零二五年度高端定制门安装与设计合同
- 二零二五年度电梯维保服务与智能化升级合同范本
- 二零二五年度企业ERP系统采购合作协议
- MySQL教程(新体系-综合应用实例视频)(第4版)习题及答案 -第08章
- 二零二五年度教育行业年合同制工人养老保险合同
- 二零二五年度健康养老项目终止合作框架协议
- 大学计算机概论(Windows10+Office2016)PPT完整全套教学课件
- 四川峨胜水泥集团股份有限公司环保搬迁3000td熟料新型干法大坝水泥生产线环境影响评价报告书
- 《公路工程计量与计价》说课草稿
- 2023年教师招聘面试高中政治《坚持以人民为中心》试讲稿 统编版 必修三
- Barrett食管医学知识讲解
- 数独课件完整版
- 西师大版六年级数学下册全册知识点汇总
- DCF-现金流贴现模型-Excel模版(dcf-估值模型)
- 江西2023年分宜九银村镇银行社会招聘上岸提分题库3套【500题带答案含详解】
- 一年级美术课后服务教案-1
- GB/T 22095-2008铸铁平板
评论
0/150
提交评论