Java的多态性,抽象类与接口

Java的多态性,抽象类与接口

ID:36710699

大小:812.50 KB

页数:68页

时间:2019-05-10

Java的多态性,抽象类与接口_第1页
Java的多态性,抽象类与接口_第2页
Java的多态性,抽象类与接口_第3页
Java的多态性,抽象类与接口_第4页
Java的多态性,抽象类与接口_第5页
资源描述:

《Java的多态性,抽象类与接口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1第6讲Java多态性、抽象类与接口掌握多态的优势和应用场合实现多态引用转型多态性程序实例分析掌握instanceof运算符的使用抽象类与抽象方法接口与接口的应用继承是指从一个父类(父类)派生出派生类(子类)的过程;继承使用关键字extends;对于类成员,可以使用public、protected、缺省和private这4种访问权限修饰符;对于类,可以使用public和缺省这2个访问权限;创建子类实例时,必须先执行父类的构造方法,然后再执行子类的构造方法;super关键字有两种主要用途,都与父类有关。回顾为什么使用多态?宠物生病了,需要主人给宠物看病不同宠物看病过

2、程不一样不同宠物恢复后体力值不一样打针吃药吃药疗养狗狗Q仔为什么使用多态?编码实现publicclassMaster{publicvoidCure(Dogdog){if(dog.getHealth()<50){dog.setHealth(60);System.out.println("打针、吃药");}}publicvoidCure(Penguinpenguin){if(penguin.getHealth()<50)penguin.setHealth(70);System.out.println("吃药、疗养");}}主人类……Mastermaster=newMa

3、ster();master.Cure(dog);master.Cure(penguin);……测试方法为什么使用多态?如果又需要给XXX看病,怎么办?添加XXX类,继承Pet类修改Master类,添加给XXX看病的方法使用多态优化设计频繁修改代码,代码可扩展性、可维护性差为什么使用多态?使用多态优化后的代码……Petpet=newDog();Mastermaster=newMaster();master.Cure(pet);……测试方法publicclassDogextendsPet{publicvoidtoHospital(){this.setHealth(60

4、);System.out.println("打针、吃药");}}publicclassPenguinextendsPet{publicvoidtoHospital(){this.setHealth(70);System.out.println("吃药、疗养");}}publicclassMaster{publicvoidCure(Petpet){if(pet.getHealth()<50)pet.toHospital();}}主人类Dog类Penguin类1234又要给XXX看病时,只需:1.编写XXX类继承Pet类(旧方案也需要)2.创建XXX类对象(旧方案也需

5、要)3.其他代码不变(不用修改Master类)什么是多态?生活中的多态你能列举出一个多态的生活示例吗?程序中的多态同一个引用类型,使用不同的实例而执行不同操作父类引用,子类对象同一种事物,由于条件不同,产生的结果也不同8多态性(polymorphism)概念:是面向对象程序设计的另一个重要特征,其基本含义是“拥有多种形态”,具体指在程序中用相同的名称来表示不同的含义。例如:用同一方法名来表示不同的操作。类型:有两种静态多态性:包括变量的隐藏、方法的重载动态多态性:在编译时不能确定调用方法,只有在运行时才能确定调用方法,又称为运行时的多态性。静态多态静态多态也称为编

6、译时多态,即在编译时决定调用哪个方法;静态多态一般是指方法重载;只要构成了方法重载,就可以认为形成了静态多态的条件;静态多态与是否发生继承没有必然联系。动态多态动态多态也称为运行时多态,即在运行时才能确定调用哪个方法;形成动态多态必须具体以下条件:必须要有继承的情况存在;在继承中必须要有方法覆盖;必须由父类的引用指向派生类的实例,并且通过父类的引用调用被覆盖的方法;由上述条件可以看出,继承是实现动态多态的首要前提。11下面主要介绍动态多态性//多态性的例子classAnimal{publicvoidroar(){System.out.println("动物:...

7、");}}classCatextendsAnimal{publicvoidroar(){System.out.println("猫:喵,喵,喵,...");}}classDogextendsAnimal{publicvoidroar(){System.out.println("狗:汪,汪,汪,...");}}12//多态性的例子(续)publicclassAnimalTest{publicstaticvoidmain(Stringargs[]){Animalam=newAnimal();am.roar();am=newDog();am.roar();am=newC

8、at();

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。