黑马程序员技术交流社区

标题: 黑马程序员-java中多态的理解 [打印本页]

作者: 自闭宅男    时间: 2014-7-6 16:31
标题: 黑马程序员-java中多态的理解
本帖最后由 自闭宅男 于 2014-7-8 20:24 编辑

  ------- <a  target="blank">android培训></a>、<a  target="blank">java培训</a>、期待与您交流! ----------

态你可以从字面上去理解,一个类表现出多种形态。它是一种编码的技巧而不是写代码的格式或者方式。
要想理解多态你需要从需求入手。
伪代码例子:

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

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

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



多态在软件结构设计上是非常重要的一个抽象意识

1:多态用于解决if,else

现代的编程技巧要求对于某一个函数专注于解决一类型的事情。这就要求一个函数中要尽量的避免出现>1个if,那么如果程序出现了分支而又要避免使用if应该怎么办呢。那就是多态最经常出现的场景。看下面的一个

2:多态用于隐藏函数的具体内容

在面向对象高度结构化的开发中,软件根据功能的不同需要分为各种模块分别交给不同的人开发。那么如果同一个接口描述一类情况显然是非常高明的。最明显的例子就是大家最常用的System,out.println(Object).初学者可能每天都在使用这样一个多态,但是却不知道这个是多态。

System,out.println();无论你输入的是一个string,object,int,array,float都可以正常输出内容。为什么,因为所有的你string,Intege,array,Float都是Object的子类,根据填入参数的类型,System,out,println()就表现出了各种输出功能的形态。



说了这么多希望你能够理解。



多态可以通过接口和继承来实现。



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

继承:一个父类可以有多个子类 (1vN : 多态的数学描述,1个形态代表多个形态)
作者: cmf195    时间: 2014-7-6 21:04
恩,很实用,System,out.println();,输入double呢???
作者: sk120110    时间: 2014-7-7 01:15
多态算是java中难理解的地方了吧




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