欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第6章接口与多态.ppt

    • 资源ID:3129857       资源大小:1.72MB        全文页数:36页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第6章接口与多态.ppt

    第6章 接口与多态,主要内容 接口 接口回调 面向接口编程 难点 面向接口编程,导学,Java不支持多继承性,即一个类只能有一个父类。单继承性使得Java简单,易于管理和维护。Java的接口更加符合人的思维方式,6.1 接 口,使用关键字interface来定义一个接口。接口的定义和类的定义很相似,分为接口的声明和接口体。,6.1.1 接口的声明与使用,接口通过使用关键字interface来声明,格式: interface 接口的名字,1接口声明,接口是一组常量和抽象方法的集合。 (1)接口的访问权限是public或缺省权限。 (2)接口中成员变量声明格式如下: public static final 成员变量名=常量 接口中成员方法声明格式如下: public abstract 返回值类型 成员方法名(参 数表) 注意:接口中成员变量和成员方法的格式是固定的,故可以省略。,2接口体,举例,interface Printable public static final int MAX=100; public abstract void add( ); public abstract float( float x, float y); ,接口的示例,public interface Shape1 public static final PI=3.14; public abstract double area(); public abstract double volume(double x); public abstract void show(); ,接口的特点,(1)接口可以定义多重继承 (2)接口不存在最高层,而Java中类的最高层是Object类。 (3)接口中的方法只能被声明为public abstract 接口中成员变量只能用public static final 来声明。 (4)接口中的方法不能定义方法体。,在Java语言中,接口由类去实现以便使用接口中的方法。一个类可以实现多个接口,类通过使用关键字implements声明自己实现一个或多个接口。如果实现多个接口,则用逗号隔开接口名 如: class A implements Printable,Addable,3接口的使用,重要性质,如果一个类实现了接口,那么这个类必须重写该接口的所有方法 重写接口的方法时,接口中的方法一定是public abstract 方法,所以类在重写接口方法时不仅要去掉abstract 修饰,给出方法体,而且方法的访问权限一定要用public 来修饰。,例6-1,public interface Computable int MAX=100; int f(int x); public class China implements Computable /China类实现Computable接口 int number; public int f(int x) /不要忘记public关键字 int sum=0; for(int i=1;i=x;i+) sum=sum+i; return sum; ,public class Japan implements Computable /Japan类实现Computable接口 int number; public int f(int x) return 46+x; ,public class Example6_1 public static void main(String args) China zhang; Japan henlu; zhang=new China(); henlu=new Japan(); zhang.number=28+Computable.MAX; henlu.number=14+Computable.MAX; System.out.println(“zhang的学号“+zhang.number+“,zhang求和结果“+zhang.f(100); System.out.println(“henlu的学号“+henlu.number+“,henlu求和结果“+henlu.f(100); ,说明,(1)如果父类实现了某接口,那么子类也就实现了该接口,子类不必显式地使用关键字implements声明实现了接口 (2)接口声明时,关键字interface前可加public (3)如果一个类声明实现了一个接口,但没有重写接口中的所有方法,那么这个类必须是abstract类,interface Computable final int MAX=100; void speak(String s); int f(int x); float g(float x,float y); abstract class A implements Comutable public int f(int x) int sum=0; for(int i=1;i=x;i+) sum+=i; return sum; ,6.1.2 理解接口,接口可以增加很多类都需要的功能,不同类可以实现相同的接口,同一个类也可以实现多个接口。,接口提供了方法声明与实现相分离的机制,使实现接口的多个类表现出相同的行为模式。,当一个类不希望通过继承使得自己具有某个方法时,就可以考虑去实现接口而不是把自己声明为某个类的子类。,例6-2,见教材,6.1.3 接口的UML图,顶部是名字层,接口名必须是斜体,而且需要用 第二层是常量层 第三层是方法层,6.2 接口回调(重点),6.2.1 接口变量与回调机制 6.2.2 接口的多态性 6.2.3 abstract 类与接口的区别,6.2.1 接口变量与回调机制,接口是一种数据类型,用接口声明的变量称为接口变量 接口变量中可以存放实现接口的类的实例的引用。 接口回调? 可以把实现某一接口的类创建的对象的引用赋给该接口声明的变量中,那么该接口变量就可以调用被类实现的接口方法 接口回调类似于上转型对象调用子类的重写方法 注意:接口变量无法调用类中的其他非接口方法,例6-3,interface ShowMessage void 显示商标(String s); class TV implements ShowMessage public void 显示商标(String s) System.out.println(s); class PC implements ShowMessage public void 显示商标(String s) System.out.println(s); public class Example6_3 public static void main(String args) ShowMessage sm; /声明接口变量 sm=new TV(); /接口变量中存放对象的引用 sm.显示商标(“长城牌电视机“); /接口回调。 sm=new PC(); /接口变量中存放对象的引用 sm.显示商标(“联想奔月5008PC机“); /接口回调 ,6.2.2 接口的多态性,继承只能让父类引用指向与其属于同一类的对象,例如肉类引用只能指向属于肉的对象。 接口引用则能指向任意类型的对象,即使对象间没有任何关系,只要这些对象所在的类实现了该接口,interface Food public void doEat();/吃食物的方法 abstract class Fruit abstract class Meat class Apple extends Fruit implements Food /实现接口中的方法 public void doEat() System.out.println(“我是苹果,我属于水果,我可以充当食物被吃掉!“); class Beef extends Meat implements Food /实现接口中的方法 public void doEat() System.out.println(“我是牛肉,我属于肉类,我可以充当食物被吃掉!“); ,示例(续),public class Test public static void main(String args ) Food f=new Apple();/创建苹果对象 f.doEat();/调用苹果的吃法 f=new Beef();/创建牛肉的对象 f.doEat();/调用牛肉的吃法 ,例6-4,见教材,6.2.3 abstract 类与接口的区别(牢记),相同点 (1)都包含抽象方法 (2)都不能被实例化 (3)都是引用数据类型,区别,(1)一个类只能继承一个抽象类,而一个类可以实现多个接口 (2)接口中的成员的访问权限都是public,而抽象类中成员的访问权限和普通类一样 (3)抽象类中可以声明成员变量,成员变量的值可以被更改;接口中只能声明常量 (4)抽象类中可以声明抽象方法、普通成员方法以及构造方法;接口中只能声明抽象方法。,6.3 面向接口编程,抽象类最本质的特性就是可以包含有抽象方法 接口中只有抽象方法,接口中将其抽象方法的实现交给实现该接口的类 使用接口进行程序设计的核心思想是使用接口回调 开闭原则:对扩展开放,对修改关闭。,例6-5,设计一个广告牌,希望所设计的广告牌可以展示许多公司的广告词 (1)分析 广告牌可以展示很多公司,要做抽取。抽取出这么多公司的广告的共性 (2)设计接口 设计一个接口Advertisement,该接口有两个方法 showAdvertisement( )和getCorpName( ).各个公司要实现该接口,例6-5,(3)设计广告牌类 该类有一个show(Advertisement adver)方法。可以接收任何实现了Advertisement接口的类的对象。,Advertisement.java public interface Advertisement /接口 public void showAdvertisement(); public String getCorpName(); ,AdvertisementBoard.java public class AdvertisementBoard /负责创建广告牌 public void show(Advertisement adver) System.out.println(adver.getCorpName()+“的广告词如下:“); adver.showAdvertisement(); /接口回调 ,WhiteCloudCorp.java public class WhiteCloudCorp implements Advertisement /PhilipsCorp实现Avertisement接口 public void showAdvertisement() System.out.println(“); System.out.printf(“飞机中的战斗机,哎yes!n“); System.out.println(“); public String getCorpName() return “白云有限公司“ ; ,BlackLandCorp.java public class BlackLandCorp implements Advertisement public void showAdvertisement() System.out.println(“*“); System.out.printf(“劳动是爹n土地是妈n想种啥来n就往外接n“); System.out.println(“*“); public String getCorpName() return “黑土集团“ ; ,Example6_5.java public class Example6_5 public static void main(String args ) AdvertisementBoard board = new AdvertisementBoard( ); board.show(new BlackLandCorp( ); board.show(new WhiteCloudCorp( ); ,小结,熟练掌握接口和抽象类的相同点和区别,理解并能够正确使用接口。 理解基于接口的多态。,

    注意事项

    本文(第6章接口与多态.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开