黑马程序员技术交流社区
标题:
多态情况下
[打印本页]
作者:
牵手相伴
时间:
2014-6-15 14:26
标题:
多态情况下
为什么函数就要先看的是子类对象,而成员变量就要先看的是父类的引用
作者:
面向大众
时间:
2014-6-15 16:21
本帖最后由 面向大众 于 2014-6-15 16:23 编辑
对于这个偏奇葩的问题还是让我这个准奇葩的人来回答好了...
之所以有多态出现,就是为了程序的扩展性和简洁性。在java中如何灵活使用成员变量和方法呢?假设在继承关系中没有多态的出现那么在写子类的时候还要重新定义成员变量,那这和从新开一个类和面向过程就没啥区别了。
java希望在子父类同时存在的情况下可以灵活调用这两个类中的方法和变量,那么多态这个概念就应运而生了。
其实这个也很好理解的,一个人在社会中不可能只有一个角色,比如你有两份工作,一份做网站一份兼职写app,那当领工资的时候你不可能用网站的身份领app的工资,即使这俩是同一个人,而且对你来说都是领工资。
那么,领工资这个行为就是抽象类或者父类的方法,而你领2份工资的时候要扮演两个角色,做网站和app。显然这在代码体现中就是继承父类的两个子类,子类中会有2个重写“领工资”的方法:“领网站工资”和“领app工资”。但是成员变量都没有变,都是你这个人,你不可能分身是吧。
多态就是具有多个状态,它可以解决一个父类有N个子类的时候,仅仅通过父类就可以调用子类方法的问题,大大提高了开发过程中的便捷性。楼主可以想象为什么它叫多态而不叫多子呢?
都是个人对多态的理解,希望能帮到楼主,别越来越绕。
作者:
牵手相伴
时间:
2014-6-16 08:40
面向大众 发表于 2014-6-15 16:21
对于这个偏奇葩的问题还是让我这个准奇葩的人来回答好了...
之所以有多态出现,就是为了程序的扩展性和简洁 ...
就是感觉和这个问题有点对不住,
作者:
喜爱
时间:
2014-6-16 09:27
过来学习一下!
作者:
任黎明
时间:
2014-6-16 11:12
我来学习了!!!!!!!!!!!!!!!!
作者:
Piston
时间:
2014-6-16 12:32
确实 有点 矛盾的感觉,你 提问的问题。
作者:
HJK
时间:
2014-6-16 12:49
有点看不太懂你的问题
作者:
过犹不及
时间:
2014-6-16 13:50
你说的问题不太懂,我倒觉得二楼的比喻很恰当,多态就是那样理解的。
作者:
wyg129911
时间:
2014-6-18 22:22
还真有点奇葩的敢脚
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2