文档介绍:该【Java的多态性抽象类与接口 】是由【红色的种子】上传分享,文档一共【64】页,该文档可以免费在线阅读,需要了解更多关于【Java的多态性抽象类与接口 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。Java的多态性抽象类与接口
第1页,共64页。
为什么使用多态?
宠物生病了,需要主人给宠物看病
不同宠物看病过程不一样
不同宠物恢复后体力值不一样
打针
吃药
吃药
疗养
狗狗
Q仔
第2页,共64页。
为什么使用多态?
编码实现
public class Master {
public void Cure(Dog dog) {
if (() < 50) {
(60);
打针、吃药");
}
}
public void Cure(Penguin penguin){
if (() < 50)
(70);
吃药、疗养");
}
}
主人类
… …
Master master = new Master();
(dog);
(penguin);
… …
测试方法
第3页,共64页。
为什么使用多态?
如果又需要给XXX看病,怎么办?
添加XXX类,继承Pet类
修改Master类,添加给XXX看病的方法
使用多态优化设计
频繁修改代码,代码可扩展性、可维护性差
第4页,共64页。
为什么使用多态?
使用多态优化后的代码
… …
Pet pet = new Dog();
Master master = new Master();
(pet);
… …
测试方法
public class Dog extends Pet {
public void toHospital() {
(60);
打针、吃药");
}
}
public class Penguin extends Pet {
public void toHospital() {
(70);
吃药、疗养");
}
}
public class Master {
public void Cure(Pet pet) {
if (() < 50)
();
}
}
主人类
Dog类
Penguin类
1
2
3
4
又要给XXX看病时,只需:
1. 编写XXX类继承Pet类(旧方案也需要)
2. 创建XXX类对象(旧方案也需要)
3. 其他代码不变(不用修改Master类)
第5页,共64页。
什么是多态?
生活中的多态
你能列举出一个多态的生活示例吗?
程序中的多态
同一个引用类型,使用不同的实例而执行不同操作
父类引用,子类对象
同一种事物,由于条件不同,产生的结果也不同
第6页,共64页。
多态性(polymorphism)
概念:是面向对象程序设计的另一个重要特征,其基本含义是“拥有多种形态”,具体指在程序中用相同的名称来表示不同的含义。例如:用同一方法名来表示不同的操作。
类型:有两种
静态多态性:包括变量的隐藏、方法的重载
动态多态性:在编译时不能确定调用方法,只有在运行时才能确定调用方法,又称为运行时的多态性。
7
第7页,共64页。
静态多态
静态多态也称为编译时多态,即在编译时决定调用哪个方法;
静态多态一般是指方法重载;
只要构成了方法重载,就可以认为形成了静态多态的条件;
静态多态与是否发生继承没有必然联系。
第8页,共64页。
动态多态
动态多态也称为运行时多态,即在运行时才能确定调用哪个方法;
形成动态多态必须具体以下条件:
必须要有继承的情况存在;
在继承中必须要有方法覆盖;
必须由父类的引用指向派生类的实例,并且通过父类的引用调用被覆盖的方法;
由上述条件可以看出,继承是实现动态多态的首要前提。
第9页,共64页。
下面主要介绍动态多态性
//多态性的例子
class Animal {
public void roar(){
}
}
class Cat extends Animal {
public void roar(){
}
}
class Dog extends Animal {
public void roar(){
}
}
10
第10页,共64页。