黑马程序员技术交流社区

标题: 面向对象的有关问题 [打印本页]

作者: $love    时间: 2013-4-22 18:53
标题: 面向对象的有关问题
本帖最后由 $love 于 2013-4-22 20:12 编辑

各位大神!我不是太理解多态!麻烦各位给详细的说说呗!谢谢!
作者: 肖川    时间: 2013-4-22 19:09
多态意指相同的信息给予不同的对象会引发不同的动作称之
比如人(Person)这个类,而继承人这个类的有男人(Man)类和女人类(Woman)
并且同统一事件的响应方式不太一样,比如说他们的父类(Person)有个方法叫做speak()
但是男人执行speak()这个方法的时候声音洪亮,粗狂。而女人执行这个方法(speak)
的时候声音尖而且低沉,故称之为多台,在会所简单点,比如说USB可以给手机充电,
可以接鼠标,也可以接键盘,但是他们执行的动作(功能)不太一样,所以称之为多态。

作者: 殇_心。    时间: 2013-4-22 19:09
本帖最后由 殇_心。 于 2013-4-22 19:11 编辑

下面是我看视频时候自己记录下来的,推荐多看看毕老师的java基础视频:
多态:  可以理解为事物存在的多种体现形态
1, 多态的体现
        父类的应用指向了自己的子类对象,父类的引用可以接受自己的子类对象         
2, 多态的前提
        必须是类与类之间有关系,要么继承,要么实现
        存在覆盖
3, 多态的好处
        多态的出现提高程序的扩展性
4, 多态的弊端
    提高了扩展性,但是只能使用父类中的成员
举个实例吧:
比如说你定义一个猫对象。
猫  a = new 猫();
动物 a = new 猫();
2种都行,多态表现形式一种。
作者: 聖手`书生    时间: 2013-4-22 19:39
{:soso_e126:}反复听老毕的视频啊,死活没搞懂吗
作者: zZZ~~    时间: 2013-4-22 19:57
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
多态有两种表现形式:重载和覆盖
首先说重载(overload),是发生在同一类中。与什么父类子类、继承毫无关系。   
  标识一个函数除了函数名外,还有函数的参数(个数和类型)。也就是说,一个类中可以有两个或更多的函数,叫同一个名字而他们的参数不同。   
  他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读性,仅此而已!  
   
  再说覆盖(override),是发生在子类中!也就是说必须有继承的情况下才有覆盖发生。
  
  我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不爽,功能要变,那就把那个函数在子类中重新实现一遍。  
  这样再调用这个方法的时候,就是执行子类中的过程了。父类中的函数就被覆盖了。(当然,覆盖的时候函数名和参数要和父类中完全一样,不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系)
作者: 陈雨    时间: 2013-4-22 20:12
本帖最后由 陈雨 于 2013-4-22 20:18 编辑
聖手`书生 发表于 2013-4-22 19:39
反复听老毕的视频啊,死活没搞懂吗


.........
作者: $love    时间: 2013-4-22 20:15
肖川 发表于 2013-4-22 19:09
多态意指相同的信息给予不同的对象会引发不同的动作称之
比如人(Person)这个类,而继承人这个类的有男人(Ma ...

Thanks!受教了!
作者: $love    时间: 2013-4-22 20:17
殇_心。 发表于 2013-4-22 19:09
下面是我看视频时候自己记录下来的,推荐多看看毕老师的java基础视频:
多态:  可以理解为事物存在的多种 ...

Thank you very much !
作者: 陈雨    时间: 2013-4-22 20:18
多态其实就是子类想用父类的方法,直接拿过来用。省的你子类用方法时每次都写代码,毕老师举的例子就是动物的,当后期动物越来越多,每种动物都有eat()这个方法,你每种动物都写这个方法是不是很烦。用的时候,注意的地方就是,你想想对象调用方法的格式就很好懂了,格式:对象.方法()。多态时Fu f=new zi(),调用f.方法,这个方法不管子类有没有父类有就编译通过;父类子类都有,则子类复写父类的方法。大概就是这样。至于强转也是一样的道理,因为父类没有子类的方法,但是想调用子类的方法,所以必须将父类变成子类,才能调用。其他的要注意的毕老师的视频都写详细,现在不懂先放在这里,等学到后面,再回头看就一下懂了。
作者: $love    时间: 2013-4-22 20:18
聖手`书生 发表于 2013-4-22 19:39
反复听老毕的视频啊,死活没搞懂吗

没有深入了解!
作者: $love    时间: 2013-4-22 20:19
zZZ~~ 发表于 2013-4-22 19:57
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活 ...

Thank you very much !




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