黑马程序员技术交流社区

标题: 怎么理解多态啊 [打印本页]

作者: 龙旋    时间: 2016-8-12 21:29
标题: 怎么理解多态啊
最近学到多态,谁能举例说说么
作者: double_x    时间: 2016-8-12 22:17
就是父类可以new一个子类出来  然后可以重写子类的方法
作者: luliang    时间: 2016-8-12 22:27
多态:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。

多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,

那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,

但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,

甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。

方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。

运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1. 方法重写(子类继承父类并重写父类中已有的或抽象的方法);

2. 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。
作者: 13411939415    时间: 2016-8-12 22:38
多态就是用父类类型的变量去存储一个子类的对象
该变量的属性和静态方法使用时都是父类中的
成员方法使用的是子类中的方法,并且该方法在父类中也存在。
作者: Maroon    时间: 2016-8-12 22:45
冯佳老师举的例子是超人和普通人之间的多态,超人是普通人的子类,平时超人是一个普通的人,当要调用救人这个方法的时候(非静态),超人就会内裤外穿变成超人去救人
作者: 夜行御史    时间: 2016-8-13 23:31
顾名思义,一个事物多种形态,对象调用的是公共的方法




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