黑马程序员技术交流社区

标题: 什么叫多态? [打印本页]

作者: 乔克    时间: 2011-11-29 16:08
标题: 什么叫多态?
什么叫多态? 大家给个例子  帮我解释一下啊{:2_39:}
作者: 朱勋    时间: 2011-11-29 16:12
前面有好几个人都问过了,自己找下吧
作者: 周敏_.net    时间: 2011-11-29 16:27
多态就是相同的方法根据对象的不同引用而产生不同的结果
C#多态性分为两种,一种是编译时的多态性,一种是运行时的多态性。

编译时的多态性:编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。

运行时的多态性:运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。C#中运行时的多态性是通过覆写虚成员实现。

作者: 杨本国    时间: 2011-11-29 16:35
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。
实现多态的方法挺多,现在水平不够啊。
我理解的:
public class DrawingObject
{
public virtual void Draw()
{
Console.WriteLine("I'm 父类");
}
}
public class Line : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I'm 子类,线");
}
}
public class Circle : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I'm 子类,圆");
}
}
using System;
public class DrawDemo
{
public static int Main(string[] args)
{
DrawingObject[] dObj = new DrawingObject[3];
dObj[0] = new Line();
dObj[1] = new Circle();
dObj[2] = new DrawingObject();
foreach (DrawingObject drawObj in dObj)
{
drawObj.Draw();
}
return 0;
}
}



作者: 何建华    时间: 2011-11-29 21:01
本帖最后由 何建华 于 2011-11-29 21:01 编辑

说实话多态我还不怎么理解,这是我看的一帖子的解释,比较通俗,对你应该有用:
如果要求3种人——孩子,运动员,音乐演奏者都执行一个动作“play”,会发生什么情况呢?
孩子会出去玩耍。
运动员会比赛。
演员开始演奏。
对于同一个命令,不同的人会有不同的反应,执行不同的动作,这就是生活中一个多态。

一个方法有多种执行

同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。
作者: 张彪    时间: 2011-11-30 08:52
多态性是指允许不同类的对象对同一消息作出的响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。又如同样的选择编辑—粘贴操作,在字处理程序和绘图程序中有不同的效果。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
作者: 谭显锋    时间: 2011-11-30 09:44
说简单点,C#中的多态,一个体现在重载,一个体现在重写(即override一个方法或者属性)。
作者: 王绚文    时间: 2011-11-30 11:08
最简单的解释: 一个父类对象指向一个子类对象 调用父类对象的方法 而这个方法指向子类的方法!




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