黑马程序员技术交流社区
标题:
多态
[打印本页]
作者:
武超
时间:
2011-12-6 22:38
标题:
多态
本帖最后由 武超 于 2011-12-8 16:05 编辑
父类引用指向子类对象这是多态吗?在什么情景下使用多态?使用多态时应该注意什么?
作者:
颜小飞
时间:
2011-12-6 22:49
这两种方式都能够产生线程,但使用接口的方式更灵活性。一个类可以实现多个接口,而只能继承一个类。能够使用接口编程时,尽量使用面向接口的编程方式,显得更面向对象一些。
作者:
武超
时间:
2011-12-6 22:51
颜小飞 发表于 2011-12-6 22:49
这两种方式都能够产生线程,但使用接口的方式更灵活性。一个类可以实现多个接口,而只能继承一个类。能够使 ...
抱歉,网络延迟了,帖子发了两遍,把第二个的问题改了
作者:
段波
时间:
2011-12-6 23:25
父类引用指向子类对象这是多态,多态就是对同一个引用会出现多个不同的结果,即子类覆盖父类的方法,我们通过父类去引用这个子类,调用父类的方法,当然实现运行的是它所指向的那个子类所对应的方法,这样对于不同的子类就会出现有同的运行结果。要注意的情况也就是,重载和覆盖的区别吧
作者:
庄承荣
时间:
2011-12-6 23:25
本帖最后由 庄承荣 于 2011-12-6 23:53 编辑
父类引用指向子类对象是多态,并且有以下特点:
1、该引用只能调用父类中定义的方法和变量;
2、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;
3、变量不能被重写(覆盖),”重写“的概念只针对方法。
类多态性的表现和注意的地方:
(1)方法重载
重载表现为同一个类中方法的多态性。一个类生命多个重载方法就是为一种功能提供多种实现。编译时,根据方法实际参数的数据类型\个数和次序,决定究竟应该执行重载方法中的哪一个.
(2)子类重定义从父类继承来的成员
当子类从父类继承来的成员不适合子类时,子类不能删除它们,但可以重定义它们,使父类成员适应子类的新需求.子类重定义父类成员,同名成员在父类与子类之间表现出多态性,父类对象引用父类成员,子类对象引用子类成员,不会产生冲突和混乱。
子类可重定义父类的同名成员变量,称子类隐藏父类成员变量。子类也可以重定义父类的同名成员方法,当子类方法的参数列表与父类方法参数列表完全相同时,称为子类方法覆盖(override)父类方法。覆盖父类方法时,子类方法的访问权限不能小于父类方法的权限。
由于Object类的equals()方法比较两个对象的引用是否相等而不是值是否相等,因此一个类要覆盖Object类的equals()方法,提供本类两个对象比较相等方法.
覆盖表现为父类与子类之间方法的多态。java 寻找执行方法的原则是:从对象所属的类开始,寻找匹配的方法执行,如果当前类中没有匹配的方法,则逐层向上依次在父类或祖先类中寻找匹配方法,直到Object类。
作者:
李盈科
时间:
2011-12-7 15:23
我觉得光说一些概念不够 实际编程中慢慢体会才好。。模糊的概念
作者:
应国炎
时间:
2011-12-7 17:06
一般使用父类引申出来的具体子类,都是使用多态吧, 比如定义一个接口, 不同的子类实现同一个接口. 可以使用接口中相同的成员,也可以使用子类本身的成员, 就像是毕老师说的动物与猫、狗例子一样。只是在编译的时候有些区别
作者:
武超
时间:
2011-12-8 16:04
恩 我了解了,谢谢啦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2