永发信息网

C#中怎样去理解多态?

答案:3  悬赏:70  手机版
解决时间 2021-07-17 14:56
可以举例子说明!但要带点文字说明!谢谢
最佳答案
using System; public class DrawingObject { public virtual void Draw() { Console.WriteLine("I'm just a generic drawing object."); } } DrawingObject类,这是个可以让其他对象继承的基类。该类有一个名为Draw()的方法。Draw()方法带有一个virtual修饰符,该修饰符表明:该基类的派生类可以重载该方法。DrawingObject类的 Draw()方法完成如下事情:输出语句"I'm just a generic drawing object."到控制台。 using System; public class Line : DrawingObject { public override void Draw() { Console.WriteLine("I'm a Line."); } } public class Circle : DrawingObject { public override void Draw() { Console.WriteLine("I'm a Circle."); } } public class Square : DrawingObject { public override void Draw() { Console.WriteLine("I'm a Square."); } } 定义了三个类。这三个类都派生自DrawingObject类。每个类都有一个同名Draw()方法,这些Draw()方法中的每一个都有一个重载修饰符。重载修饰符可让该方法在运行时重载其基类的虚方法,实现这个功能的条件是:通过基类类型的指针变量来引用该类。 实现多态性的程序:DrawDemo.cs using System; public class DrawDemo { public static int Main(string[] args) { DrawingObject[] dObj = new DrawingObject[4]; dObj[0] = new Line(); dObj[1] = new Circle(); dObj[2] = new Square(); dObj[3] = new DrawingObject(); foreach (DrawingObject drawObj in dObj) { drawObj.Draw(); } return 0; } } 输出结果是: I'm a Line. I'm a Circle. I'm a Square. I'm just a generic drawing object. 在DrawDemo 程序中,调用了每个派生类的重载的Draw()方法。 最后一行中,执行的是DrawingObject类的虚方法Draw()。这是因为运行到最后,数组的第四个元素是DrawingObject类的对象。
参考资料: http://www.cnblogs.com/ninetynine/archive/2007/09/06/884998.html
全部回答
车:车轮、方向盘等 --->公交车:车轮、方向盘、很多座位 --->货车:车轮、方向盘、货箱
简单的说,建立一个父类的变量,它的内容可以是这个父类的,也可以是它的子类的,当子类拥有和父类同样的函数,当使用这个变量调用这个函数的时候,定义这个变量的类,也就是父类,里的同名函数将被调用,当在父类里的这个函数前加virtual关键字,那么子类的同名函数将被调用   class A {   public:   A() {}   virtual void foo() {   cout << "This is A." << endl;   }   };   class B : public A {   public:   B() {}   void foo() {   cout << "This is B." << endl;   }   };   int main(int argc, char* argv[]) {   A *a = new B();   a->foo();   return 0;   }   这将显示:   This is B.   如果把virtual去掉,将显示:   This is A.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
无意间在看了在朋友的问问你看到了你的回答觉
问个关于装家具的问题
速求:DNF河南六的一身苍莽多少金币???我3
大话西游和梦幻西游哪个好玩些呢
给产妇煲什么烫好
广西南供电力有限公司是怎么样一家公司?
最近有啥好听的新歌不
怎样提高理科成绩
盗版的windows 7的价格是多少
QQ三国角色被屏蔽了,怎么找回来呢?
地下城怒灵套加残杀要多少钱
我在老家上学的那5年月经都很正常,近两年外
去哪里下载dsm_gm软件
真的有天长地久吗?真的有海枯石烂吗?
求修改病句!!
推荐资讯
关于4S店客户管理制度问题,有经验的来谈谈
邱县邯郸天韵文化艺术中心(邱县店)地址有谁知
水浒Q传FS95带什么宠物?
是不是所有的银行定期存款到期不取都会自动转
赵圭贤的签名是什么样的?
怎么使游戏不疲佬
对于“水是一种怎样的液体”,你有了哪些新的
QQ3國學生裝是限時出售的嗎?
武汉成熟装带哪抵买,?
高考考什么?
空间里花藤的营养值怎么增长啊
广东省中山市有哪些公司?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?