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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 武超 黑马帝   /  2011-12-6 22:38  /  2763 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 武超 于 2011-12-8 16:05 编辑

父类引用指向子类对象这是多态吗?在什么情景下使用多态?使用多态时应该注意什么?

7 个回复

倒序浏览
这两种方式都能够产生线程,但使用接口的方式更灵活性。一个类可以实现多个接口,而只能继承一个类。能够使用接口编程时,尽量使用面向接口的编程方式,显得更面向对象一些。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
颜小飞 发表于 2011-12-6 22:49
这两种方式都能够产生线程,但使用接口的方式更灵活性。一个类可以实现多个接口,而只能继承一个类。能够使 ...

抱歉,网络延迟了,帖子发了两遍,把第二个的问题改了
回复 使用道具 举报
父类引用指向子类对象这是多态,多态就是对同一个引用会出现多个不同的结果,即子类覆盖父类的方法,我们通过父类去引用这个子类,调用父类的方法,当然实现运行的是它所指向的那个子类所对应的方法,这样对于不同的子类就会出现有同的运行结果。要注意的情况也就是,重载和覆盖的区别吧

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
本帖最后由 庄承荣 于 2011-12-6 23:53 编辑

父类引用指向子类对象是多态,并且有以下特点:

1、该引用只能调用父类中定义的方法和变量;      

2、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;

3、变量不能被重写(覆盖),”重写“的概念只针对方法。

类多态性的表现和注意的地方:

(1)方法重载

重载表现为同一个类中方法的多态性。一个类生命多个重载方法就是为一种功能提供多种实现。编译时,根据方法实际参数的数据类型\个数和次序,决定究竟应该执行重载方法中的哪一个.

(2)子类重定义从父类继承来的成员

当子类从父类继承来的成员不适合子类时,子类不能删除它们,但可以重定义它们,使父类成员适应子类的新需求.子类重定义父类成员,同名成员在父类与子类之间表现出多态性,父类对象引用父类成员,子类对象引用子类成员,不会产生冲突和混乱。

子类可重定义父类的同名成员变量,称子类隐藏父类成员变量。子类也可以重定义父类的同名成员方法,当子类方法的参数列表与父类方法参数列表完全相同时,称为子类方法覆盖(override)父类方法。覆盖父类方法时,子类方法的访问权限不能小于父类方法的权限。

由于Object类的equals()方法比较两个对象的引用是否相等而不是值是否相等,因此一个类要覆盖Object类的equals()方法,提供本类两个对象比较相等方法.

覆盖表现为父类与子类之间方法的多态。java 寻找执行方法的原则是:从对象所属的类开始,寻找匹配的方法执行,如果当前类中没有匹配的方法,则逐层向上依次在父类或祖先类中寻找匹配方法,直到Object类。

评分

参与人数 1技术分 +2 收起 理由
admin + 2 赞一个!

查看全部评分

回复 使用道具 举报
我觉得光说一些概念不够 实际编程中慢慢体会才好。。模糊的概念
回复 使用道具 举报
应国炎 黑马帝 2011-12-7 17:06:36
7#
一般使用父类引申出来的具体子类,都是使用多态吧, 比如定义一个接口, 不同的子类实现同一个接口. 可以使用接口中相同的成员,也可以使用子类本身的成员, 就像是毕老师说的动物与猫、狗例子一样。只是在编译的时候有些区别

回复 使用道具 举报
武超 黑马帝 2011-12-8 16:04:52
8#
恩 我了解了,谢谢啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马