《接口与多态》PPT课件.ppt

上传人:小飞机 文档编号:5516352 上传时间:2023-07-15 格式:PPT 页数:36 大小:1,005.50KB
返回 下载 相关 举报
《接口与多态》PPT课件.ppt_第1页
第1页 / 共36页
《接口与多态》PPT课件.ppt_第2页
第2页 / 共36页
《接口与多态》PPT课件.ppt_第3页
第3页 / 共36页
《接口与多态》PPT课件.ppt_第4页
第4页 / 共36页
《接口与多态》PPT课件.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《《接口与多态》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《接口与多态》PPT课件.ppt(36页珍藏版)》请在三一办公上搜索。

1、第6章接口与多态,主要内容 接口 接口回调 面向接口编程难点 面向接口编程,导学,Java不支持多继承性,即一个类只能有一个父类。单继承性使得Java简单,易于管理和维护。Java的接口更加符合人的思维方式,6.1 接 口,使用关键字interface来定义一个接口。接口的定义和类的定义很相似,分为接口的声明和接口体。,6.1.1 接口的声明与使用,接口通过使用关键字interface来声明,格式:interface 接口的名字,1接口声明,接口是一组常量和抽象方法的集合。(1)接口的访问权限是public或缺省权限。(2)接口中成员变量声明格式如下:public static final 成

2、员变量名=常量接口中成员方法声明格式如下:public abstract 返回值类型 成员方法名(参 数表)注意:接口中成员变量和成员方法的格式是固定的,故可以省略。,2接口体,举例,interface Printable public static final int MAX=100;public abstract void add();public abstract float(float x,float y);,接口的示例,public interface Shape1public static final PI=3.14;public abstract double area();pu

3、blic abstract double volume(double x);public abstract void show();,接口的特点,(1)接口可以定义多重继承(2)接口不存在最高层,而Java中类的最高层是Object类。(3)接口中的方法只能被声明为public abstract 接口中成员变量只能用public static final 来声明。(4)接口中的方法不能定义方法体。,在Java语言中,接口由类去实现以便使用接口中的方法。一个类可以实现多个接口,类通过使用关键字implements声明自己实现一个或多个接口。如果实现多个接口,则用逗号隔开接口名如:class A

4、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;publ

5、ic 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 Ja

6、pan();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)如果一个类声明实现

7、了一个接口,但没有重写接口中的所有方法,那么这个类必须是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 Comutablepublic int f(int x)int sum=0;for(int i=1;i=x;i+)sum+=i;return sum;,6.1.2 理解接口,接口可以增加很多类都需要的功能,不同类可以实现相同的接口,同一个类也可以实现多个接口。,接口提供了

8、方法声明与实现相分离的机制,使实现接口的多个类表现出相同的行为模式。,当一个类不希望通过继承使得自己具有某个方法时,就可以考虑去实现接口而不是把自己声明为某个类的子类。,例6-2,见教材,6.1.3 接口的UML图,顶部是名字层,接口名必须是斜体,而且需要用第二层是常量层第三层是方法层,6.2 接口回调(重点),6.2.1 接口变量与回调机制6.2.2 接口的多态性6.2.3 abstract 类与接口的区别,6.2.1 接口变量与回调机制,接口是一种数据类型,用接口声明的变量称为接口变量接口变量中可以存放实现接口的类的实例的引用。接口回调?可以把实现某一接口的类创建的对象的引用赋给该接口声明

9、的变量中,那么该接口变量就可以调用被类实现的接口方法接口回调类似于上转型对象调用子类的重写方法注意:接口变量无法调用类中的其他非接口方法,例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

10、public static void main(String args)ShowMessage sm;/声明接口变量 sm=new TV();/接口变量中存放对象的引用 sm.显示商标(长城牌电视机);/接口回调。sm=new PC();/接口变量中存放对象的引用 sm.显示商标(联想奔月5008PC机);/接口回调,6.2.2 接口的多态性,继承只能让父类引用指向与其属于同一类的对象,例如肉类引用只能指向属于肉的对象。接口引用则能指向任意类型的对象,即使对象间没有任何关系,只要这些对象所在的类实现了该接口,interface Foodpublic void doEat();/吃食物的方法ab

11、stract class Fruit abstract class Meat class Apple extends Fruit implements Food/实现接口中的方法public void doEat()(我是苹果,我属于水果,我可以充当食物被吃掉!);class Beef extends Meat implements Food/实现接口中的方法public void doEat()(我是牛肉,我属于肉类,我可以充当食物被吃掉!);,示例(续),public class Testpublic static void main(String args)Food f=new Appl

12、e();/创建苹果对象f.doEat();/调用苹果的吃法f=new Beef();/创建牛肉的对象f.doEat();/调用牛肉的吃法,例6-4,见教材,6.2.3 abstract 类与接口的区别(牢记),相同点(1)都包含抽象方法(2)都不能被实例化(3)都是引用数据类型,区别,(1)一个类只能继承一个抽象类,而一个类可以实现多个接口(2)接口中的成员的访问权限都是public,而抽象类中成员的访问权限和普通类一样(3)抽象类中可以声明成员变量,成员变量的值可以被更改;接口中只能声明常量(4)抽象类中可以声明抽象方法、普通成员方法以及构造方法;接口中只能声明抽象方法。,6.3 面向接口编

13、程,抽象类最本质的特性就是可以包含有抽象方法接口中只有抽象方法,接口中将其抽象方法的实现交给实现该接口的类使用接口进行程序设计的核心思想是使用接口回调开闭原则:对扩展开放,对修改关闭。,例6-5,设计一个广告牌,希望所设计的广告牌可以展示许多公司的广告词(1)分析广告牌可以展示很多公司,要做抽取。抽取出这么多公司的广告的共性(2)设计接口设计一个接口Advertisement,该接口有两个方法showAdvertisement()和getCorpName().各个公司要实现该接口,例6-5,(3)设计广告牌类该类有一个show(Advertisement adver)方法。可以接收任何实现了A

14、dvertisement接口的类的对象。,Advertisement.javapublic interface Advertisement/接口 public void showAdvertisement();public String getCorpName();,AdvertisementBoard.javapublic class AdvertisementBoard/负责创建广告牌 public void show(Advertisement adver)System.out.println(adver.getCorpName()+的广告词如下:);adver.showAdvertis

15、ement();/接口回调,WhiteCloudCorp.javapublic class WhiteCloudCorp implements Advertisement/PhilipsCorp实现Avertisement接口 public void showAdvertisement()();(飞机中的战斗机,哎yes!n);();public String getCorpName()return 白云有限公司;,BlackLandCorp.javapublic class BlackLandCorp implements Advertisement public void showAdve

16、rtisement()(*);(劳动是爹n土地是妈n想种啥来n就往外接n);(*);public String getCorpName()return 黑土集团;,Example6_5.javapublic class Example6_5 public static void main(String args)AdvertisementBoard board=new AdvertisementBoard();board.show(new BlackLandCorp();board.show(new WhiteCloudCorp();,小结,熟练掌握接口和抽象类的相同点和区别,理解并能够正确使用接口。理解基于接口的多态。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号