类和对象浅谈(3)

来源:互联网 发布:ghost网络克隆软件 编辑:程序博客网 时间:2024/06/05 12:40

我们之前写了封装和继承(类和对象的三大特性中的两种),今天我来说说三大特性中的第三种:多态(polymorphism) ,什么叫多态?专业术语有点绕口,先用自己的话描述一下就是一个老祖宗下面有好多子女,然后这个这些子女又好多子女 依次往下 无休无止,虽然繁衍出了很多新人,但是却有着相同血脉,这就是生活中典型的多态应用(有点点偏颇,不正之处望大神赐教),而java中的老祖宗就是Object类,所有的类都继承了Object类。专业的多态解释:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
多态分两种:
(1) 编译时多态:编译时动态重载(overload);
(2) 运行时多态:指一个对象可以具有多个类型,方法的覆盖(override)
这样对于对象而言分为:
理解运行时多态:
Car c = new Bus();
Car编译时类型 编译时检查变量类型是否存在,是否有调用的方法。
Bus运行时类型 实际运行是访问heap中的对象,调用实际的方法。
运行时多态是由运行时类型决定的
编译时多态是由编译时类型决定的
可能大家对重载(overload)和重写(override)还很模糊 甚至以为他俩是一回事,其实不然,据我自己的理解重载是根据参数的类型和个数区别的,而重写就是继承父类中的方法,然后根据当前类的具体实现功能重新把原来父类中的方法重新实现,所以现在看重载和重写根本就不搭边,别被外表迷惑了双眼哦。。。
多态是有前提的 这个我就不写代码了 ,先理解,然后后面会用得很多的:
1, 要有继承
2,要有重写(override)
3,要有父类指向子类的应用 太绕了吧 其实就这样(Car c = new Bus(); )前提是Bus继承了Car。
所以我们前面说的封装,继承都是为多态打基础的,然而多态的实现是需要继承,借口去实现的,在下一篇中我会把抽象类(abstract)和接口(interface)好好聊聊,大神们,今天多态没有举代码实例,并不代表他不重要 ,他是java中的精髓,我们时刻都会用到它 只不过没发现而已。。哈哈 不扯淡了 今天就扯到这

0 0
原创粉丝点击