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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 啷个里个郞 于 2012-5-13 00:00 编辑

求帮忙   

4 个回复

倒序浏览
父类A有一个方法function(),子类B,C分别继承A并且重写function(),当创建一个对象A b = new B(); b.function()就调用B的funciotn,假如你new C(),那调用的就是C重写的function。怎么判断使用那个类的function就是动态绑定,这个现象就是多态...

点评

谢谢  发表于 2012-5-12 23:58
回复 使用道具 举报
就好比 动物是一个父类  然后  猫   狗  鱼  都是多态的表现形式

点评

谢谢  发表于 2012-5-12 23:58
回复 使用道具 举报
多态你可以从字面上去理解,一个类表现出多种形态。它是一种编码的技巧而不是写代码的格式或者方式。



要想理解多态你需要从需求入手。

伪代码例子:

void method(Father instance): instance.callmethod();

现在有两个子类 girl 和 boy . 如果我传入给method的对象是girl,那么instance.callmethod()是否就等同于

girl.callmethod(),如果传入的是boy,就等同于boy.callmethod().但是对于程序而言,表达式一直都是 void method(Father instance): instance.callmethod();没有改变过只不过通过传入不同的子类对象使这样一个表达式表现出了多种“类的形态”。这样的现象就叫做多态。

一个接口可以对应多个实现 (1vN : 多态的数学描述,1个形态代表多个形态)

继承:一个父类可以有多个子类 (1vN : 多态的数学描述,1个形态代表多个形态)

点评

有爱,谢谢。  发表于 2012-5-12 23:56

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
实现多态的机制就是重载和重写。重写是父类与子类之间多态性的一种表现;
重载是一个类中多态性的一种表现。

点评

谢谢  发表于 2012-5-12 23:58
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马