第7章 接口与实现

上传人:ldj****22 文档编号:48595039 上传时间:2018-07-17 格式:PPT 页数:22 大小:165KB
返回 下载 相关 举报
第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 来定义一个接口。接口的 定义和类的定义很相似,分为接口的声明和接口体。Date1信息学院7.1.1 接口的声明与使用 (1)接口声明接口通过使用关键字interface 来声明interface 接口的名字 (2)接口体接口体中包含常量定义和方法定义两部分。接口 体中只进行方法的声明,不许提供方法的实现,所以 方法的定义没有方法体,且用分号结尾。7.1 接口Date2信息学院例:int

2、erface Runnerpublic static final int id=1;public void start( );public void run( );public void stop( );7.1 接口Date3信息学院(3)接口的使用一个类通过使用关键字implements 声明自 己使用一个或多个接口。如果使用多个接口,用 逗号隔开接口名。如:class A implements Printable,Addableclass Dog extends Animal implements Eatable,Sleepable7.2 实现接口Date4信息学院7.2 实现接口如果一个

3、类使用了某个接口,那么这个类必须实 现该接口的所有方法,即为这些方法提供方法体。需要注意的是在类中实现接口的方法时,方法的 名字、返回类型、参数个数及类型必须与接口中的完 全一致。特别要注意的是接口中的方法被默认是public 的 ,所以类在实现接口方法时一定要用public 来修饰。Date5信息学院如果接口的方法的返回类型不是void 的,那么在 类中实现该接口方法时,方法体至少要有一个return 语句。如果是void 型,类体除了两个大括号外,也可 以没有任何语句。 7.2 实现接口Java 为我们提供的接口都在相应的包中,通过引 入包可以使用Java 提供的接口。也可以自己定义接口

4、,一个java源文件就是由类和接口组成的。Date6信息学院例:import java.applet.*;import java.awt.*;interface Computablefinal int MAX=100;void speak(String s);int f(int x);float g(float x,float y);class China implements Computableint xuehao;public int f(int x) /不要忘记public关键字.int sum=0;for(int i=1;i=x;i+) sum=sum+i; return sum;D

5、ate7信息学院public float g(float x,float y)return 6; /至少有return语句.public void speak(String s) class Japan implements Computableint xuehao;public int f(int x)return 68;public float g(float x,float y)return x+y; Date8信息学院public void speak(String s) public class Example4_26 extends AppletChina Li; Japan He

6、nlu;public void init()Li=new China(); Henlu=new Japan();Li.xuehao=991898; Henlu.xuehao=941448;Date9信息学院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); 注:如果一个类声明实现一个接口,但

7、没有实现接口 中的所有方法,那么这个类必须是 abstract 类。Date10信息学院接口的语法规则很容易记住,但真正理解接口更 重要。你可能注意到,在上述例子26 中如果去掉接口 ,并把程序中的Li.MAX,Henlu.MAX 去掉,上述程 序的运行没有任何问题。那为什么要用接口呢?7.3 理解接口Date11信息学院假如轿车、卡车、拖拉机、摩托车、客车都是机 动车的子类,其中机动车是一个抽象类。如果机动车 中有一个抽象方法 “收取费用”,那么所有的子类都 要实现这个方法,即给出方法体,产生各自的收费行 为。这显然不符合人们的思维方法,因为拖拉机可能 不需要有”收取费用”的功能,而其他的一

8、些类,比如 飞机、轮船等可能也需要具体实现”收取费用”。7.3 理解接口Date12信息学院接口可以增加很多类都需要实现的功能,不同 的类可以使用相同的接口,同一个类也可以实现多 个接口。7. 3 理解接口接口只关心功能,并不关心功能的具体实现。比如“客车类”实现一个接口,该接口中有一个“ 收取费用”的方法,那么这个“客车类”必须具体给出 怎样收取费用的操作,即给出方法的方法体,不同 车类都可以实现“收取费用”,但“收取费用”的手段 可能不相同。Date13信息学院7.3 理解接口接口的思想在于它可以增加很多类都需要实现的 功能,使用相同的接口类不一定有继承关系。注:接口声明时,如果关键字in

9、terface 前面加上 public 关键字,就称这样的接口是一个public 接口, public 接口可以被任何一个类使用。如果一个接口不加public 修饰,就称做友好接口 类,友好接口可以被同一包中的类使用。Date14信息学院7.4 接口的UML图 表示接口的UML图和表示类的UML图类似,使用 一个长方形描述一个接口的主要构成,将长方形垂直 地分为三层。第1层是名字层、第2层是常量层、第3层是方法层 。Date15信息学院接口回调是指可以把实现某一接口的类创建的对 象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的 方法。实际上,当接口变量调用被类实现

10、的接口中的 方法时,就是通知相应的对象调用接口的方法。7.5 接口回调Date16信息学院例:interface ShowMessagevoid 显示商标(String s);class TV implements ShowMessagepublic void 显示商标(String s)System.out.println(s);class PC implements ShowMessagepublic void 显示商标(String s)System.out.println(s);7.5 接口回调Date17信息学院public class Example4_28public stati

11、c void main(String args)ShowMessage sm; sm=new TV(); sm.显示商标(“长城牌电视机“); sm=new PC(); sm.显示商标(“联想奔月5008PC机“); 7.5 接口回调Date18信息学院7.7 接口变量做参数如果一个方法的参数是接口类型,就可以将任何实现 该接口类的实例的引用传递给该接口参数,那么接口 参数就可以回调类实现的接口方法。Date19信息学院7.6 接口与多态 可以通过在接口中声明若干个abstract方法,表 明这些方法的重要性,方法体的内容细节由实现接 口的类去完成。使用接口进行程序设计的核心思想 是使用接口回

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

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