黑马程序员技术交流社区

标题: 多态求解 [打印本页]

作者: ajj1314    时间: 2016-5-21 13:17
标题: 多态求解
多态的内容和特点知道,但是感觉还是很抽象,有没有大神们帮忙解释下,以及多态的作用和什么时候用
作者: huburt    时间: 2016-5-21 16:28
子类对象可以赋给父类,父类使用方法的时候其实调用的是子类重写父类的方法
作者: ajj1314    时间: 2016-5-21 20:25
huburt 发表于 2016-5-21 16:28
子类对象可以赋给父类,父类使用方法的时候其实调用的是子类重写父类的方法 ...

那父类怎么调用自己的方法
作者: huburt    时间: 2016-5-21 20:44
ajj1314 发表于 2016-5-21 20:25
那父类怎么调用自己的方法

要用父类自己方法就不要给父类引用指向子类对象啊,就是不要用多态,直接创建父类对象不就好了
作者: hjbing456    时间: 2016-5-21 22:31
多态要有继承 要有重写  要有父类引用指向子类对象
作者: HeiMaZ    时间: 2016-5-21 22:41
多态就是事物的多种形态,比如动物吃,是个广义上的吃,可以定义猫吃,狗吃等
作者: 我love    时间: 2016-5-21 23:25
java引用变量有两个类型,一个是编译时类型,一个运行时类型。编译时类型是由声明该变量的类型决定的,而运行时类型则是实际赋给该变量的对象决定的,如果编译和运行类型不一样就产生了多态。
我的理解是,编译的时候是父类类型,但是运行时子类类型,当你调用引用变量的时候,调用的是父类的成员,因为实例方法父类的被子类重写覆盖了,所以实例方法是运行子类的,其他的是运行父类的,如果调用父类没有子类的方法则会报错,其他的变量则调用的仍是父类的
作者: okchenyang44    时间: 2016-5-21 23:27
父类使用方法的时候其实调用的是子类重写父类的方法
作者: 一架飞机CE3    时间: 2016-5-22 00:21
ajj1314 发表于 2016-5-21 20:25
那父类怎么调用自己的方法

直接方法名调用啊 你要觉得不放心就价格this.方法名();
作者: hanshichao    时间: 2016-5-22 00:42
1.可替换性。多态对已存在的代码具有可替换性。  2.可扩充性。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际 上新加子类更容易获得多态功能。    3.接口性。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。    4.灵活性。它在应用中体现了灵活多样的操作,提高了使用效率。    5.简化性。多态简化了对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。值得注意的是,多态并不能够解决提高执行速度的问题,因为它基于动态装载和地址引用,或称动态绑定。  在程序需要扩展的时候,需要使用到多态。
作者: Mr.Wu    时间: 2016-5-22 09:17
同一段代码可以做不同的事情。
作者: 68846259    时间: 2016-5-22 09:57
父类引用指向子类对象
作者: ajj1314    时间: 2016-5-22 22:24
我love 发表于 2016-5-21 23:25
java引用变量有两个类型,一个是编译时类型,一个运行时类型。编译时类型是由声明该变量的类型决定的,而运 ...

给力,感觉你理解的很到位,嘎嘎
作者: lifeiwangyue    时间: 2016-5-22 22:35
前提是有继承或者实现  重写父类有的方法,在使用父类引用的地方可以传入其子类对象就可以了  ,除了非静态的方法,其余运行都看父类的
作者: SkyBlack    时间: 2016-5-22 23:19
感觉你这个问题可以写一篇论文了。。。。
作者: 网小二    时间: 2016-5-23 00:58
多态的主要应用在于作为参数传递,父类作为形参传递,可以传入子类对象作为实参。如果没有多态就需要重载一万个方法
作者: 308437189    时间: 2016-5-25 08:41
多态:将子类的对象赋值给父类的应用,如 学生基础人   Person person = new Student();这就是多态,这时person引用处于栈内存中,而对象new Student()处于堆内存中。多态的优点就是在,重写或实现(抽象类)从Person中继承(或实现)的方法时,不需要去修改该继承(实现【对接口和抽象类而言】)体系中方法的调用。缺点,无法调用子类或实现类特有的方法!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2