课时74:多态性简介
摘要:多态性是面向对象中的第三大主要特征,多态性是在继承性的基础之上扩展出来的概念,也就是说可以实现父子类之间的相转化处理。
1.方法的多态性
2. 对象的多态性
01. 方法的多态性
在 Java之中对于多态性有两种实现模式。
1.1 方法的重载
例如以下代码:同一个方法名称可以根据传入的参数的类型或个数的不同实现不同的功能的执行。类似于白天一个身份,晚上一个身份。
代码如下:
class Message { public void print() { System.out.println("www.mldn.cn"); } public void print(String str) { System.out.println(str); } } public class JavaDemo { public static void main(String args[]) { } }
1.2 方法的覆写
同一个方法可能根据子类的不同有不同的实现。
代码如下:
class Message { public void print() { System.out.println("www.mldn.cn"); } } class DataBaseMessage extends Message { public void print() { System.out.println("Oracle数据库连接信息...." ); } } class NetworkMessage extends Message { public void print() { System.out.println("网络连接信息...." ); } } public class JavaDemo { public static void main(String args[]) { // main方法中的代码未显示在图中 } }
此时我们发现一个问题:如果类不同,Print的方法功能能一样吗?当然是不一样的。所以我们发现,方法的重载与方法的覆写都要根据实际情况而有所改变。这就是方法的多态性。方法的多态性并不难理解,那什么是对象的多态性呢?
02. 对象的多态性
父子实例之间的转换处理,它有两种模式:
对象的向上转型:父类 父类实例 = 子类实例、自动完成转换
对象的向下转型:子类 子类实例 =(子类)父类实例、强制完成转换
例如说人是动物,就属于向上转型;若说动物是人,则特指了一下,就是向下转型。从实际情况的转型处理来讲,大部分情况下考虑最多的一定是对象的向上转型(90%)、对于对象的向下转型往往都在使用子类特殊功能(子类可以对付类进行功能扩充)的时候采用向下转型(3%),还有一些情况是不会考虑转型的(String类、7%)。