A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ajj1314 中级黑马   /  2016-5-21 13:17  /  725 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态的内容和特点知道,但是感觉还是很抽象,有没有大神们帮忙解释下,以及多态的作用和什么时候用

16 个回复

正序浏览
多态:将子类的对象赋值给父类的应用,如 学生基础人   Person person = new Student();这就是多态,这时person引用处于栈内存中,而对象new Student()处于堆内存中。多态的优点就是在,重写或实现(抽象类)从Person中继承(或实现)的方法时,不需要去修改该继承(实现【对接口和抽象类而言】)体系中方法的调用。缺点,无法调用子类或实现类特有的方法!
回复 使用道具 举报
多态的主要应用在于作为参数传递,父类作为形参传递,可以传入子类对象作为实参。如果没有多态就需要重载一万个方法
回复 使用道具 举报
感觉你这个问题可以写一篇论文了。。。。
回复 使用道具 举报
前提是有继承或者实现  重写父类有的方法,在使用父类引用的地方可以传入其子类对象就可以了  ,除了非静态的方法,其余运行都看父类的
回复 使用道具 举报
我love 发表于 2016-5-21 23:25
java引用变量有两个类型,一个是编译时类型,一个运行时类型。编译时类型是由声明该变量的类型决定的,而运 ...

给力,感觉你理解的很到位,嘎嘎
回复 使用道具 举报
父类引用指向子类对象
回复 使用道具 举报
Mr.Wu 中级黑马 2016-5-22 09:17:45
11#
同一段代码可以做不同的事情。
回复 使用道具 举报
1.可替换性。多态对已存在的代码具有可替换性。  2.可扩充性。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际 上新加子类更容易获得多态功能。    3.接口性。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。    4.灵活性。它在应用中体现了灵活多样的操作,提高了使用效率。    5.简化性。多态简化了对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。值得注意的是,多态并不能够解决提高执行速度的问题,因为它基于动态装载和地址引用,或称动态绑定。  在程序需要扩展的时候,需要使用到多态。
回复 使用道具 举报
ajj1314 发表于 2016-5-21 20:25
那父类怎么调用自己的方法

直接方法名调用啊 你要觉得不放心就价格this.方法名();
回复 使用道具 举报
父类使用方法的时候其实调用的是子类重写父类的方法
回复 使用道具 举报
java引用变量有两个类型,一个是编译时类型,一个运行时类型。编译时类型是由声明该变量的类型决定的,而运行时类型则是实际赋给该变量的对象决定的,如果编译和运行类型不一样就产生了多态。
我的理解是,编译的时候是父类类型,但是运行时子类类型,当你调用引用变量的时候,调用的是父类的成员,因为实例方法父类的被子类重写覆盖了,所以实例方法是运行子类的,其他的是运行父类的,如果调用父类没有子类的方法则会报错,其他的变量则调用的仍是父类的
回复 使用道具 举报
多态就是事物的多种形态,比如动物吃,是个广义上的吃,可以定义猫吃,狗吃等
回复 使用道具 举报
多态要有继承 要有重写  要有父类引用指向子类对象
回复 使用道具 举报
ajj1314 发表于 2016-5-21 20:25
那父类怎么调用自己的方法

要用父类自己方法就不要给父类引用指向子类对象啊,就是不要用多态,直接创建父类对象不就好了
回复 使用道具 举报
huburt 发表于 2016-5-21 16:28
子类对象可以赋给父类,父类使用方法的时候其实调用的是子类重写父类的方法 ...

那父类怎么调用自己的方法
回复 使用道具 举报
子类对象可以赋给父类,父类使用方法的时候其实调用的是子类重写父类的方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马