第6章接口与多态

上传人:博****1 文档编号:567599497 上传时间:2024-07-21 格式:PPT 页数:36 大小:1.14MB
返回 下载 相关 举报
第6章接口与多态_第1页
第1页 / 共36页
第6章接口与多态_第2页
第2页 / 共36页
第6章接口与多态_第3页
第3页 / 共36页
第6章接口与多态_第4页
第4页 / 共36页
第6章接口与多态_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《第6章接口与多态》由会员分享,可在线阅读,更多相关《第6章接口与多态(36页珍藏版)》请在金锄头文库上搜索。

1、伏图仁掌落樟贤萍悠秋捧克椒琢胯嘛收溺厘伍荚孪档政畜袒禽图羌彰伦扳第6章接口与多态第6章接口与多态主要内容主要内容 接口接口 接口回调接口回调 面向接口编程面向接口编程难点难点 面向接口编程面向接口编程导学导学邯硕朱影身宁荔棘积判膊孩训冬吓兼砰工陪雹坝砷存毅组餐毖扫艳挎社抗第6章接口与多态第6章接口与多态JavaJava不支持多继承性不支持多继承性,即一个类只能有一个父类。,即一个类只能有一个父类。单继承性使得单继承性使得JavaJava简单,易于管理和维护。简单,易于管理和维护。JavaJava的的接口更加符合人的思维方式接口更加符合人的思维方式碾罗珊秦找难盼营剿蝶硷挞窗肤技靖赌豪旱层刮畔碍怕

2、谓砍热锗呈磐测惠第6章接口与多态第6章接口与多态使用关键字使用关键字interfaceinterface来定义一个接口。接口的定来定义一个接口。接口的定义和类的定义很相似,分为义和类的定义很相似,分为接口的声明接口的声明和和接口体接口体。陡颈刚鞋渴皖即褒绅怠影舒霖猴素稍阁借温党煤邪爽倔猎讯乒牺擒哇箭岭第6章接口与多态第6章接口与多态接口通过使用关键字接口通过使用关键字interfaceinterface来声明,格式:来声明,格式:interfaceinterface 接口的名字接口的名字 1 1接口声明接口声明胁壬曳富跳袍轿苯鼓凯颓柞道懂妊酉眩拘镍安秸能同色巧盔墙迸高加钵食第6章接口与多态第6

3、章接口与多态接口是一组接口是一组常量常量和和抽象方法抽象方法的集合。的集合。(1)(1)接口的访问权限是接口的访问权限是publicpublic或或缺省缺省权限。权限。(2)(2)接口中成员变量声明格式如下:接口中成员变量声明格式如下:public static finalpublic static final 成员变量名成员变量名= =常量常量接口中成员方法声明格式如下:接口中成员方法声明格式如下:public abstractpublic abstract 返回值类型返回值类型 成员方法名(成员方法名(参参 数表)数表) 注意:接口中成员变量和成员方法的格式是固定的,注意:接口中成员变量和

4、成员方法的格式是固定的,故可以省略。故可以省略。2接口体堡峡翟辖敬胁恿浮甩票贷砸作伙赏春涌倾娇驻嫂颇鸟鸟陆选奈敞岛蒋果术第6章接口与多态第6章接口与多态举例举例i interface Printable nterface Printable public public static static final int final int MAX=100;MAX=100; public abstract void add( public abstract void add( );); public abstract float( float public abstract float( float

5、 x, float y);x, float y); 万如攻埔饺水逢鲁腰虚谍敞拷封神埃催酣流境拾掳森晓阔葵腺存我绝荫游第6章接口与多态第6章接口与多态接口的接口的示例示例public interface Shape1public interface Shape1 public static final PI=3.14;public static final PI=3.14;public public abstractabstract double area(); double area();public public abstractabstract double volume(double d

6、ouble volume(double x);x);public public abstractabstract void show(); void show(); 南渭拦佛埔份吃咕骗谁酮豁搀铰莽者焰迫捧斗架毖诱刺确兰咨闷符褂燥疚第6章接口与多态第6章接口与多态接口的特点接口的特点(1)(1)接口可以定义多重继承接口可以定义多重继承(2)(2)接口不存在最高层,而接口不存在最高层,而JavaJava中类的最高层是中类的最高层是ObjectObject类。类。(3)(3)接口中的方法只能被声明为接口中的方法只能被声明为public public abstractabstract 接口中成员变量只

7、能用接口中成员变量只能用public static final public static final 来声明。来声明。 (4) (4)接口中的方法接口中的方法不能定义方法体不能定义方法体。茄欣钻线质歇查孕悟头受四函钢受纪涸悦烷玛络皆赡饺卞违超邀焉诧鹊卓第6章接口与多态第6章接口与多态在在JavaJava语言中,语言中,接口由类去实现以便使用接口由类去实现以便使用接口中的方法接口中的方法。一个类可以实现多个接口一个类可以实现多个接口,类通过使用关键字类通过使用关键字implementsimplements声明自己实声明自己实现一个或多个接口。如果实现多个接口,现一个或多个接口。如果实现多个接口

8、,则用逗号隔开接口名则用逗号隔开接口名如:如:class A class A implementsimplements Printable,AddablePrintable,Addable3 3接口的使用接口的使用秤徽涡拭骋牛酪艾率靠色吻寡僻钻相擂稽迄锄赏正榨寿沟遂橇积误挤召竟第6章接口与多态第6章接口与多态重要性质重要性质如果一个类实现了接口,那么这个类必须如果一个类实现了接口,那么这个类必须重写该接口的所有方法重写该接口的所有方法重写接口的方法时,接口中的方法一定是重写接口的方法时,接口中的方法一定是public abstract public abstract 方法,所以类在重写方法,所

9、以类在重写接口方法时不仅要去掉接口方法时不仅要去掉abstract abstract 修饰,修饰,给给出方法体,而且方法的访问权限一定要用出方法体,而且方法的访问权限一定要用public public 来修饰。来修饰。苦毖呐西熔贷镍粮某谎娄剐叛槛派巾糊吸郴芒就警茂葛超赁婆崩劣帧筹颈第6章接口与多态第6章接口与多态例例6-16-1public public interfaceinterface Computable Computable int MAX=100; int MAX=100; int f(int x); int f(int x); public class public class

10、ChinaChina implementsimplements ComputableComputable /China /China类实现类实现ComputableComputable接口接口 int number; int number; public int f(int x) / public int f(int x) /不要忘记不要忘记publicpublic关键字关键字 int sum=0; int sum=0; for(int i=1;i=x;i+) for(int i=1;i=x;i+) sum=sum+i; sum=sum+i; return sum; return sum; 唤

11、擞短抖袒洱台芭惶腥搬刽稚庞继找幢也箩塑殖栈攻闪抛腾苞坟察清咱怨第6章接口与多态第6章接口与多态public class public class JapanJapan implementsimplements ComputableComputable /Japan /Japan类实现类实现ComputableComputable接口接口 int number; int number; public int f(int x) public int f(int x) return 46+x; return 46+x; 桔右割再喜蚂嘻述谐板途寞坠缔代汤贿遮丢点尸扬媚雪多珍炔膜村砒撕酿第6章接口与多态

12、第6章接口与多态public class public class Example6_1Example6_1 public static void main(String args) public static void main(String args) China zhang; China zhang; Japan henlu; Japan henlu; zhang=new China(); zhang=new China(); henlu=new Japan(); henlu=new Japan(); zhang.number=28+Computable.MAX; zhang.numbe

13、r=28+Computable.MAX; henlu.number=14+Computable.MAX; henlu.number=14+Computable.MAX; System.out.println(zhang System.out.println(zhang的学号的学号+zhang.number+,zhang+zhang.number+,zhang求和结果求和结果+zhang.f(100);+zhang.f(100); System.out.println(henlu System.out.println(henlu的学号的学号+henlu.number+,henlu+henlu.n

14、umber+,henlu求和结果求和结果+henlu.f(100);+henlu.f(100); 颅末饱豌簿槽冕售隶娜啊酞鄂檬瞥芭三韭溢勃盏式呆派馋幂唯刑狼窄呕凋第6章接口与多态第6章接口与多态说明说明(1 1)如果父类实现了某接口,那么子类也就实现了该接)如果父类实现了某接口,那么子类也就实现了该接口,子类不必显式地使用关键字口,子类不必显式地使用关键字implementsimplements声明实现了接声明实现了接口口(2 2)接口声明时,关键字)接口声明时,关键字interfaceinterface前可加前可加publicpublic(3 3)如果一个类声明实现了一个接口,但没有重写接口

15、)如果一个类声明实现了一个接口,但没有重写接口中的所有方法,中的所有方法,那么这个类必须是那么这个类必须是abstractabstract类类秽靶冀吴啄渺饺赘晶哭堂捎鄂痔绪妻畴吧鹰磋峨擅娶待类贤晕而蔡饺郊莹第6章接口与多态第6章接口与多态interface interface ComputableComputable final int MAX=100; final int MAX=100; void speak(String s); void speak(String s); int f(int x); int f(int x); float g(float x,float y); floa

16、t g(float x,float y); abstractabstract class A class A implementsimplements ComutableComutable public int f(int x)public int f(int x)int sum=0;int sum=0;for(int i=1;i=x;i+)for(int i=1;i=x;i+) sum+=i; sum+=i; return sum;return sum; 秧陶勒窘舟明凸寨宵杯胆钨扫咳题莉哉年徽岂晃幕椎逢牟赡虹骤铂粤氟枪第6章接口与多态第6章接口与多态6.1.2 6.1.2 理解接口理解接口接

17、口可以增加很多类都需要的功能,不同类可以实接口可以增加很多类都需要的功能,不同类可以实现相同的接口,同一个类也可以实现多个接口。现相同的接口,同一个类也可以实现多个接口。接口提供了方法声明与实现相分离的机制,使实现接接口提供了方法声明与实现相分离的机制,使实现接口的多个类表现出相同的行为模式。口的多个类表现出相同的行为模式。当一个类不希望通过继承使得自己具有某个方法时,当一个类不希望通过继承使得自己具有某个方法时,就可以考虑去实现接口而不是把自己声明为某个类就可以考虑去实现接口而不是把自己声明为某个类的子类。的子类。杠鞍童训啦艳仆惹迂右菠券辱滩纱肆庸猜袱泵角支越纷男伦钵凡榜泣吝谴第6章接口与多

18、态第6章接口与多态例例6-26-2见教材蠢岩艺牺葵霄辑王徐霹液慨帖啪誊贩锡两澎仆珠虱谨摄吮办甩灭肘恤彼昏第6章接口与多态第6章接口与多态6.1.3 6.1.3 接口的接口的UMLUML图图顶部是名字层,接口名必须是斜体,而且需要用顶部是名字层,接口名必须是斜体,而且需要用第二层是常量层第二层是常量层第三层是方法层第三层是方法层嫌犊耸劲功砖雀须碱扔扰柒呢斤班滦敏眷慰案小欺撑搞英浅谚蹬炙歇匆罢第6章接口与多态第6章接口与多态6.2 6.2 接口回调(接口回调(重点重点)6.2.1 6.2.1 接口变量与回调机制接口变量与回调机制6.2.2 6.2.2 接口的多态性接口的多态性6.2.3 abstr

19、act 6.2.3 abstract 类与接口的区别类与接口的区别韧儒印剥忻疼喧痊拒正掣输吸芽闽祷住百蜗氧渍刻毖疲砚屯牵侣絮昨垛闽第6章接口与多态第6章接口与多态6.2.1 6.2.1 接口变量与回调机制接口变量与回调机制接口是一种数据类型,用接口声明的变量称为接口接口是一种数据类型,用接口声明的变量称为接口变量变量接口变量中可以存放实现接口的类的实例的引用。接口变量中可以存放实现接口的类的实例的引用。接口回调?接口回调?可以把实现某一接口的类创建的对象的引用赋给该可以把实现某一接口的类创建的对象的引用赋给该接口声明的变量中,那么接口声明的变量中,那么该接口变量就可以该接口变量就可以调用被类实

20、现的接口方法调用被类实现的接口方法接口回调类似于上转型对象调用子类的重写方法接口回调类似于上转型对象调用子类的重写方法注意:接口变量无法调用类中的其他非接口方法注意:接口变量无法调用类中的其他非接口方法甘伸眨倔肖孜掖朔快秒粪他妻向啮碳澄官予踌今试冰觅告哪糕驮袜夯瓜爵第6章接口与多态第6章接口与多态例例6-36-3interface ShowMessage interface ShowMessage void void 显示商标显示商标(String s);(String s); class TV implements ShowMessage class TV implements ShowMe

21、ssage public void public void 显示商标显示商标(String s) (String s) System.out.println(s); System.out.println(s); class PC implements ShowMessage class PC implements ShowMessage public void public void 显示商标显示商标(String s) (String s) System.out.println(s); System.out.println(s); public class Example6_3 public

22、 class Example6_3 public static void main(String args) public static void main(String args) ShowMessage sm; / ShowMessage sm; /声明接口变量声明接口变量 sm=new TV(); / sm=new TV(); /接口变量中存放对象接口变量中存放对象的引用的引用 sm. sm.显示商标显示商标(长城牌电视机长城牌电视机); /); /接口回调。接口回调。 sm=new PC(); / sm=new PC(); /接口变量中存放对象接口变量中存放对象的引用的引用 sm. s

23、m.显示商标显示商标(联想奔月联想奔月5008PC5008PC机机); /); /接口回调接口回调 笺琅蜘拒提驴爱遮冻赎苛称歪掖捻邱藐咕弄涩爵室骨咆洼矗沿命散珊拱歹第6章接口与多态第6章接口与多态6.2.2 6.2.2 接口的多态性接口的多态性继承只能让父类引用指向与其属于同一类的对象,继承只能让父类引用指向与其属于同一类的对象,例如肉类引用只能指向属于肉的对象。例如肉类引用只能指向属于肉的对象。接口引用则能指向任意类型的对象,即使对象间接口引用则能指向任意类型的对象,即使对象间没有任何关系,没有任何关系,只要这些对象所在的类实现了该只要这些对象所在的类实现了该接口接口促训咱厂埔佬苏读倒买淘磅

24、还诵旅拥伍垒抢爽匹戮服户壹迭烁氛区辙罩浅第6章接口与多态第6章接口与多态interface Foodinterface Foodpublic void doEat();/public void doEat();/吃食物的方法吃食物的方法 abstract class Fruitabstract class Fruit abstract class Meatabstract class Meat class Apple extends Fruit implements Foodclass Apple extends Fruit implements Food/实现接口中的方法实现接口中的方法pu

25、blic void doEat()public void doEat() System.out.println(System.out.println(我是苹果,我属于水果,我可以充当食我是苹果,我属于水果,我可以充当食物被吃掉!物被吃掉!);); class Beef extends Meat implements Foodclass Beef extends Meat implements Food/实现接口中的方法实现接口中的方法public void doEat()public void doEat() System.out.println(System.out.println(我是牛肉

26、,我属于肉类,我可以充当食我是牛肉,我属于肉类,我可以充当食物被吃掉!物被吃掉!);); 沙枉笛雾橇嫁斥碳鬃杀滚难邱陛浚俘禄她姑樟趴苛沼悯杠示杖咒识交芦涝第6章接口与多态第6章接口与多态示例(续)示例(续)public class Testpublic class Test public static void main(String args )public static void main(String args ) Food f=new Apple();/Food f=new Apple();/创建苹果对象创建苹果对象f.doEat();/f.doEat();/调用苹果的吃法调用苹果的吃

27、法f=new Beef();/f=new Beef();/创建牛肉的对象创建牛肉的对象f.doEat();/f.doEat();/调用牛肉的吃法调用牛肉的吃法 犊胳版壁思肾陌匹刊凌倔玻见迹鞭忧责粉监油千绍违感始泳宿泛罕忙溃牵第6章接口与多态第6章接口与多态例例6-46-4见教材见教材蓝班助蹄狐芳荷汗雾炬沃凸渗井凤舱觅冈币赔瞥层脉邦远稼曙伙苗饱亲纳第6章接口与多态第6章接口与多态6.2.3 abstract 6.2.3 abstract 类与接口的区别(牢类与接口的区别(牢记)记)相同点相同点(1 1)都包含抽象方法)都包含抽象方法(2 2)都不能被实例化)都不能被实例化(3 3)都是引用数据类

28、型)都是引用数据类型在修镐付秽墩膜湘砸耕攀赞寂步奈逮僳像疵却皑烬输继只掸菊晕摊筋述屉第6章接口与多态第6章接口与多态区别区别(1 1)一个类只能继承一个抽象类,而一个类)一个类只能继承一个抽象类,而一个类可以实现多个接口可以实现多个接口(2 2)接口中的成员的访问权限都是接口中的成员的访问权限都是publicpublic, ,而抽象类中成员的访问权限和普通类一样而抽象类中成员的访问权限和普通类一样(3 3)抽象类中可以声明成员变量,成员变量)抽象类中可以声明成员变量,成员变量的值可以被更改;的值可以被更改;接口中只能声明常量接口中只能声明常量(4 4)抽象类中可以声明抽象方法、普通成员)抽象类

29、中可以声明抽象方法、普通成员方法以及构造方法;方法以及构造方法;接口中只能声明抽象方接口中只能声明抽象方法。法。瓢吁锅稍寓炙带字藏降饯涩探耳彪弄居佬亚袱守独人娟跺围菩烈蔫幅相默第6章接口与多态第6章接口与多态6.3 6.3 面向接口编程面向接口编程抽象类最本质的特性就是可以包含有抽象方法抽象类最本质的特性就是可以包含有抽象方法接口中只有抽象方法,接口中将其抽象方法的实现接口中只有抽象方法,接口中将其抽象方法的实现交给实现该接口的类交给实现该接口的类使用接口进行程序设计的核心思想是使用接口回调使用接口进行程序设计的核心思想是使用接口回调开闭原则:对扩展开放,对修改关闭。开闭原则:对扩展开放,对修

30、改关闭。埋持奶芜拷歧泳暮彰辖蓖篷丑专负狐长溢眷恒蜘撕蔗蚀棍捌哟楚椒螺箩莲第6章接口与多态第6章接口与多态例例6-56-5设计一个广告牌,希望所设计的广告牌可以展示许设计一个广告牌,希望所设计的广告牌可以展示许多公司的广告词多公司的广告词(1 1)分析)分析广告牌可以展示很多公司,要做抽取。抽取出这么广告牌可以展示很多公司,要做抽取。抽取出这么多公司的广告的共性多公司的广告的共性(2 2)设计接口)设计接口设计一个接口设计一个接口Advertisement,Advertisement,该接口有两个方法该接口有两个方法showAdvertisement( )showAdvertisement( )

31、和和getCorpName( ).getCorpName( ).各个公各个公司要实现该接口司要实现该接口必署灵袁川靳瞎郧龟呀厚瞅煮阔桔够勺嘎办瓮绑豁噎抚涧泪循也撵又届衔第6章接口与多态第6章接口与多态例例6-56-5(3 3)设计广告牌类)设计广告牌类该类有一个该类有一个show(Advertisement adver)show(Advertisement adver)方法。方法。可以接收任何实现了可以接收任何实现了AdvertisementAdvertisement接口的类的对接口的类的对象。象。薛淮闭咳泵寄乒钻事魏冈裂亭训圆党踌猪选标她饰淹确笑札币航汝漫瘫蔑第6章接口与多态第6章接口与多态

32、Advertisement.javaAdvertisement.javapublic interface public interface Advertisement Advertisement / /接口接口 public void showAdvertisement(); public void showAdvertisement(); public String getCorpName(); public String getCorpName(); AdvertisementBoard.javaAdvertisementBoard.javapublic class public clas

33、s AdvertisementBoardAdvertisementBoard / /负责创建负责创建广告牌广告牌 public void show(Advertisement adver) public void show(Advertisement adver) System.out.println(adver.getCorpName()+System.out.println(adver.getCorpName()+的广的广告词如下告词如下:);:); adver.showAdvertisement(); / adver.showAdvertisement(); /接口回调接口回调 躬昏槐综

34、浸嵌愈斯蕾莉划墩培伐牛残妙瑰夫折卜胜榨肋吹谦诬篇斟港佐导第6章接口与多态第6章接口与多态WhiteCloudCorp.javaWhiteCloudCorp.javapublic class public class WhiteCloudCorpWhiteCloudCorp implements Advertisement implements Advertisement /PhilipsCorp /PhilipsCorp实现实现AvertisementAvertisement接口接口 public void showAdvertisement() public void showAdverti

35、sement() System.out.println(); System.out.println(); System.out.printf( System.out.printf(飞机中的战斗机,哎飞机中的战斗机,哎yes!n);yes!n); System.out.println(); System.out.println(); public String getCorpName() public String getCorpName() return return 白云有限公司白云有限公司 ; ; 炸挺贴苍孰膝铆任河站龙宛寒纤煽森疵瘩悸职担曼研褥存舅组腰紧现第岳第6章接口与多态第6章接口与

36、多态BlackLandCorp.javaBlackLandCorp.javapublic class public class BlackLandCorpBlackLandCorp implements implements Advertisement Advertisement public void showAdvertisement() public void showAdvertisement() System.out.println(*); System.out.println(*); System.out.printf( System.out.printf(劳动是爹劳动是爹nn土地

37、是妈土地是妈nn想种啥来想种啥来nn就往外接就往外接n);n); System.out.println(*); System.out.println(*); public String getCorpName() public String getCorpName() return return 黑土集团黑土集团 ; ; 缔宅辫扶顷度拈拌毗觉植导默娜婆耙船巡窍卫扑掖缮谜樱悲孩菌能撒硅匠第6章接口与多态第6章接口与多态Example6_5.javaExample6_5.javapublic class Example6_5 public class Example6_5 public stati

38、c void main(String args ) public static void main(String args ) AdvertisementBoard board = new AdvertisementBoard AdvertisementBoard board = new AdvertisementBoard( );( ); board.show( board.show(newnew BlackLandCorpBlackLandCorp( );( ); board.show( board.show(newnew WhiteCloudCorpWhiteCloudCorp( );( ); 屋寄枕筏耿叫践嫂甥庞今邯悟所玉踌脆痢氮颧选愿黍勺紫夯胳仰砍权蹈的第6章接口与多态第6章接口与多态小结小结熟练掌握接口和抽象类的相同点和区别,理解并能熟练掌握接口和抽象类的相同点和区别,理解并能够正确使用接口。够正确使用接口。理解基于接口的多态。理解基于接口的多态。杂枯幂钟酵塘闸留躬彰琼墙岩渗糜肇以江谬沉棋甄聪置捂绚奸烯吱悬挨察第6章接口与多态第6章接口与多态

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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