多态性-接口-抽象类.ppt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多态性 接口 抽象
- 资源描述:
-
,*,单击此处编辑标题,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑标题,*,标题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,oop多态,abstract,修饰符,由,abstract,修饰的方法叫抽象方法;由,abstract,修饰的类叫抽象类,抽象方法必须声明在抽象类中(含有抽象方法的类,必须定义为抽象类),抽象方法语法:,public,abstract,void,fun(),声明抽象类语法:,abstract,class,使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方法的实现细节,abstract,修饰符练习:,首先定义一个类Person,属性:name,age 方法:eat(),.在Person里面再定义一个抽象的方法say(),查看结果,结果:程序报错,,含有抽象方法的类,必须定义为抽象类。,.尝试声明一个对象,然后new一个Person类的实例,查看结果。,结果:程序报错,,抽象类,可以声明,但不能实例化。,写一Student类,继承Person类。查看结果。,结果:,子类必须重写父类(抽象类)里面的抽象方法。,增加方法体,使之成为一个非抽象方法。可以空实现。,如果子类没有实现抽象基类(,父类,)中所有的抽象方法,则子类也必须定义成一个抽象类。,考虑,含有抽象方法的类,必须定义为抽象类,,,如果一个类中没有抽象方法,那可以定义为抽象类吗,?,使用程序验证。,答案:,可以将,没有任何抽象方法的类声明为abstract,。,大家想下,这样做有什么作用呢?,避免由这个类直接创建任何的对象,。,abstract,修饰符,抽象类可以具有指向子类对象的对象引用,abstract,抽象类不能被,实例化,构造方法,和,static,方法不能是抽象的,父类的抽象方法往往在子类中实现,abstract,修饰符,抽象类可以被,final,修饰吗?,抽象类可以有构造方法吗?,有没使用,abstract,修饰的构造方法?,抽象类练习,用抽象类实现多态,假设人类分两种学生和工人,student:,属性:姓名、年龄、成绩(score),,方法,say(),worker:,属性:姓名、年龄、工资(salary),,方法,say(),PS:Student和worker的say(),说话的内容不一样,小结,用,abstract,关键字来修饰一个类时,这个类叫抽象类;用,abstract,来修饰一个方法时,该方法叫做抽象方法。,abstract,类必须被继承,,abstract,方法必须被重写。,抽象类不能被实例化(直接创建对象)。,抽象方法只需声明,而不需实现(无方法体)。,作业,作业:按以下要求编写程序,创建一个抽象的车类,包括各种车辆,。至少包含一个抽象方法。成员变量:品牌、可载人数、轮子个数、能源等。抽象方法如:跑、加速、刹车等。,通过继承车类重新声明公共汽车类和普通自行车类。,在子类中实现父类中抽象方法,构造方法对应区分为公共汽车和普通自行车,。子类的构造方法中根据不同的类设置不同的默认值,如汽车类可以默认轮子个数是,4,个,可载人数,50,个,能源为汽油。,生活中的接口,电脑主板上的,PCI,插槽的规范就类似于,Java,接口,声卡,电视卡,网卡,每种卡的内部结构都不相同,可以把声卡、网卡、显卡都插在,PCI,插槽上,而不用担心哪个插槽是专门插哪个卡的,主板,接口,如果一个抽象类中的所有方法都是抽象的,就可以将这个类用另外一种方式来定义,也就是接口定义。,接口是,抽象方法,和,常量值,的定义的集合。,从本质上讲,接口是一种特殊的抽象类。这种抽象类中包含常量和方法的定义,而没有变量和方法的实现。例如,public,interface,Runner,int,ID=1;,void run();,注意:在接口,中,,所有的成员都是,public,访问类型的,而不论是否用,public,关键字修饰;接口里的变量都是用,public static final,标识的,所以,接口中定义的变量就是全局静态常量。,接口中的方法默认都是,public,abstract,类型的,。,JAVA,接口,一个,JAVA,接口是一些方法特征的集合,但是没有方法的实现。,JAVA,中定义的方法在不同的地方被实现,可以具有完全不同的实现。,public,interface,PCI,public void,start();,public void,stop();,这是,Java,接口,相当于主板上的,PCI,插槽的规范,class,SoundCard,implements,PCI,public void,start()System.,out,.println(,Du du.,);,public void,stop()System.,out,.println(,Sound stop!,);,class,NetworkCard,implements,PCI,public void,start()System.,out,.println(,Send.,);,public void,stop()System.,out,.println(,Network stop!,);,声卡、网卡都实现了,PCI,插槽的规范,但行为完全不同,接口特点,写一个接口,验证以下特点:,1.,接口中的成员变量默认都是,public static fina,l,类型的。,2.,接口中的方法默认都是,public abstract,类型的。,3.,接口没有构造方法,不允许创建接口的实例。,4.,接口必须通过其他类来实现它的抽象方法。,5.,一个类可以实现多个接口。,接口的使用,一个类只能用,implements,关键字去实现一个接口中的所有方法,class Fish,implements,Animal,public void run(),System.out.println(“fish,can swim!”);,public void breathe(),System.out.println(“fish,can breathe!”);,我们可以定义一个新的接口,用,extends,关键字去继承一个已有的接口。,注意,:,只能接口继承接口,类不能继承接口,。,写一程序验证,一个类可以在继承一个父类的同时,实现一个或多个接口,,extends,关键字必须位于,implements,关键字,之前,,如我们可以这样定义:,interface Flyer,void fly();,class Bird extends animal implements Runner,Flyer,public void run(),public void fly(),接口的使用,面向接口编程的示例,4-1,升级上述的,Wepull,系统,要求:,打印机有多种类型,比如:黑白打印机、彩色打印机等,区域可能配备其中任意一款打印机,负责信息,系统要具备良好的可扩展性与可维护性,print,方法,(打印),彩色打印机,黑白打印机,黑白内容,区域,/,讲师,详细信息,彩色内容,面向接口编程的示例,4-2,采用面向接口编程的方式实现,以下是三个步骤中的第一步:,抽象出,Java,接口,1,、分析:,黑白、彩色打印机都存在一个共同的方法特征:,print,黑白、彩色打印机对,print,方法有各自不同的实现,2,、结论:,抽象出,Java,接口,Printer,,在其中定义方法,print,3,、具体实现:,public,interface,Printer,public void,print,(String,content);,面向接口编程的示例,4-3,采用面向接口编程的方式实现,以下是三个步骤中的第二步:,public class,ColorPrinter,implements,PrinterFace,public void,print,(String,content),System.out.println,(,彩色打印:,);,System.out.println(content,);,public class,BlackPrinter,implements,PrinterFace,public void,print,(String,content),System.out.println,(,黑白打印:,);,System.out.println(content,);,实现,Java,接口,1,、,分析:,已经抽象出,Java,接口,PrinterFace,,并在其中定义了,print,方法,黑白、彩色打印机对,print,方法有各自不同的实现,2,、结论:,黑白、彩色打印机都实现,PrinterFace,接口,各自实现,print,方法,3,、具体实现:,面向接口编程的示例,4-4,采用面向接口编程的方式实现,以下是三个步骤中的第三步:,使用,Java,接口,1,、,分析:,主体构架使用接口,让接口构成系统的骨架,2,、结论:,更换实现接口的类就可以更换系统的实现,3,、具体实现:,public class WepullArea3 implements,Introduceable,private,PrinterFace,printer;/,打印机,public void,setPrinter(PrinterFace,p),this.printer,=p;,public String detail(),return,这里是,Wepull,区域,;,public void,print(Introduceable,intro),printer.print(intro.detail,();,public class,WepullTest,public static void,main(String,args,),/,创建区域实例,WepullArea3 area=new WepullArea3();,/,为该区域配备黑白打印机,area.setPrinter(,new,BlackPrinter,(),);,area.print(area,);,/,为该区域配备彩色打印机,area.setPrinter(,new,ColorPrinter,(),);,area.print(area,);,多态机制,(,polymorphisn,),多态机制是面向对象程序设计的一个重要特征。,多态的特点是,采用同名的方式,根据调用方法时传送的参数的多少以及传送参数类型的不同,调用不同的方法,,这样对于类的编制而言,可以采用同样的方法获得不同的行为特征。,多态性,编译时多态,表现为,方法名相同,而参数列表不同,。典型:,System.out.println,();,它的参数有很多种。,运行时多态,程序运行的时候判断到底是哪个类(父类还是子类的),进而确定实际调用的方法,3,对象的多态性,(子类对象和父类对象的相互转化关系),向上转型 父类 父类对象,=new,子类的实例,自动完成,向下转型 子类 子类对象,=,new,父类的实例,强制完成,。,重载,覆盖,多态(,polymorphisn,),简单来说,:,多态是能用一种类型去表现多种形态的特征,下面写一个类,Dog,,继承于类,Animal,,要求使用对象多态性。,多态,练习(按要求设计出以下类):,fruit,类:具有一个自我介绍方法,fun(),apple,类:继承,fruit,类,覆盖父类的,fun(),方法,有一个的方法,funA,(),orange,类,:,继承,fruit,类,覆盖父类的,fun(),方法,同时有一 个自己的方法,funO,(),person,类:设计一个方法,eat(),,要求可以接受,fruit,类所 有实例,并在,eat(),中调用实例自己自我介绍,fun(),方法。,多态,修改,eat,方法,可以在,eat(),方法中调用,Apple,类或,Orange,类中自有的方法。,I,nstanceof,关键字,I,nstanceof,操作符用于判断一个引用类型所引用的对象是否是一个类的实例。,使用示例:,obj,instranceof,ClassName,(,类名,),obj,instranceof,InterfaceName,(,接口名,),返回一个,boolean,型的数据,一个类的实例包括:,类本身的实例,直接子类的实例,间接子类的实例,如何实现多态,子类继承父类,子类重写父类的方法,编写方法时,使用父类作为形参类型,将子类的对象作为实参传递给该方法,运行时,根据实际创建的对象类型动态决定使用哪个子类的方法,实现多态的三个条件:,1.,要有继承,2.,要有重写,3.,父类的对象指向子类的实例,多态综合练习,动物园的饲养员为猫吃鱼,狗吃肉,大象吃香蕉。,展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




多态性-接口-抽象类.ppt



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/10786302.html