所有的老鼠都开始逃跑java_9.接口.ppt

9.接口

第九课 接 口 回 顾 1、重载与重写的定义是什么,二者有何区别? 2、编译器通过方法的哪些部分来辨认方法是否为同一方法? 3、由哪个关键字修饰的类不能被继承,String类能被继承么? 4、下面哪些定义会发生编译错误,为什么? abstract final String getName(){.....} abstract static int getAge(){.....} abstract final class Hello{......} class Hello{abstract void print();} abstract class Hello{abstract final void print();} abstract class Hello{abstract static void print();} 5、抽象类中必须要存在抽象方法么,抽象类可以被实例化么? 6、一个类继承抽象类之后可不可以不实现它的抽象方法? 本课案例 USB接口的其中一个功能是即插即用,所谓”即插即用”是指该接口可以支持热插拔,表示可以在计算机运行中随时通过这个接口接入一个新的设备并能立即使用,USB接口都是统一标准的热插拔接口,可以接入不同的设备,如果接入鼠标则完成鼠标功能、接入键盘则完成键盘功能 根据上面的描述设计接口USB,其中有一个称为即插即用hotPlug接口方法,鼠标类(Mouse)实现该接口用于完成鼠标的功能(单击、双击、拖放、滚动);键盘(keyboard)实现该接口用于完成键盘功能(打字、信息录入) 本章目标 理解接口的概念 理解Java接口与多态的关系 掌握面向接口编程的思想 掌握常量的使用 会使用接口提高代码的可维护性和可扩展性 现实世界中的接口 接口的概念 它是一种100%纯抽象的类。接口里的所有方法都是抽象方法,换句话说:接口中没有具体实现的方法。 接口的概念 使用接口的好处 如果你是Dog类的程序设计师,且必须修改Dog类让它能够执行宠物的动作(跟主人亲热和跟主人游戏),你会怎么办? 我们知道直接在Dog类中加入宠物的方法是可行的,并且不会影响到其他类,但是如果Cat类也需要有宠物的功能怎么办? 方法一:也许有的同学想到了,把宠物的方法加入到父类Animal类里不就可以了吗?但是方法不能具体化 方法二:采用方法一,但是把宠物的方法设定成抽象的,强迫每个动物子类重写它。但是不是每种动物都具备所需要的行为 方法三:我们做两个父类,一个动物类(Animal),一个宠物类(Pet)。但Java中不允许多继承 使用接口的好处 方法四:接口是我们的救星。 使用接口的好处 Java中接口作为参数带给我们的好处是什么呢?我们来通过下面两个解决方案的对比进一步加深对接口和多态的认识: 现在我们来开发一个小系统,涉及的类型有校长、教员、学员,具体要求如下: (1)教员和学员都具有方法:迎接(sayHello)。 (2)校长具有方法:检查迎接(checkWelcome)。 (3)系统必须很容易扩展和维护。 使用接口的好处 分析下面解决方案的缺点。 使用接口的好处 可以使用多态解决这个问题吗? 回顾多态的含义: 实现同一个接口,使用不同的实例而执行不同操作 使用接口的好处 在这个系统中,存在继承关系吗? 教员、学员属于两种不同的类型,无法通过“is-a” 找到一个合适的父类 教员、学员都存在一个共同的方法特征:sayHello,它们对sayHello方法有各自不同的实现——这完全符合Java接口的定义 使用接口的好处 使用Java接口的解决方案,系统有没有改进? 三步大变样——面向接口编程 我们通过三步采用面向接口编程的思想来完成下面的实例: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊 醒。 听到猫叫声的对象有两个:主人和老鼠。 猫大叫会吓到上面任意一个对象,两个对象会有不 同的反应。 系统需要具备良好的可扩展性和可维护性。 三步大变样——面向接口编程 第一步:抽象出Java接口 主人和老鼠听到猫大叫以后都会有相同的行为:response(反应),但是他们对response方法各自有不同的实现,因此我们可以抽象出来一个接口Actor(代表参与者),在其中定义response方法。 三步大变样——面向接口编程 第二步:实现Java接口 下面主人和老鼠实现参与者接口,各自实现response方 法。 三步大变样——面向接口编程 第三步:使用Java接口 常量的重要性 大家都知道,圆周率的值是固定的,计算圆的周长和面积都会用到,而且它会在程序中反复使用;下面的例子中用到了圆周率进行周长和面积的计算: 常量的重要性 上例貌似没有问题,稍作修

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值