C# 多态性
2012-01-16 17:10
183 查看
MSDN 上面的定义:通过继承,一个类可以有多种类型:可以用作它自己的类型,任何基类型,或者在实现接口时用作任何接口的类型。
从两个方面来说明多态
1.在运行时,方法参数和集合或者是数组等位置,派生类的对象都可以作为基类的对象处理,发生此情况时,该对象的声明类型不再与运行时类型相同。
2.基类定义实现虚方法,派生类重写这些方法,在运行时,CLR会查找运行时类型,并且调用派生类重写的方法.
从两个方面来说明多态
1.在运行时,方法参数和集合或者是数组等位置,派生类的对象都可以作为基类的对象处理,发生此情况时,该对象的声明类型不再与运行时类型相同。
2.基类定义实现虚方法,派生类重写这些方法,在运行时,CLR会查找运行时类型,并且调用派生类重写的方法.
class Shape { public virtual void Draw() { Console.WriteLine("Draw a shape"); } } class Circle : Shape { public override void Draw() { Console.WriteLine("Draw a circle"); } } class Rectangle : Shape { public override void Draw() { Console.WriteLine("Draw a Rectangle"); } } class Triangle : Shape { public override void Draw() { Console.WriteLine("Draw a Triangle"); } } class Programm { static void Main() { //此次就说明了,派生类对象可以作为基类对象进行处理 Shape[] shapes = { new Circle(), new Rectangle(), new Triangle() }; foreach (Shape s in shapes) { //调用Draw()方法的时候,调用了派生重写的方法,而不是基类 s.Draw(); } } }
相关文章推荐
- C# 多态性
- c# 多态性
- C#中的多态性
- 【C#】多态性
- 浅谈c#多态性
- C# 语言特性系列(2) 多态性 Polymorphism
- C# 多态性
- C#与C++多态性对比分析1
- (教学思路 C#之类八)多态性:base、new、override、virtual
- C#继承的多态性
- C#中的多态性
- C#实现面向对象多态性的三种方式
- C#中的多态性
- [推荐]c#多态性03
- C++与C#中包含多态性分析
- C#多态性-抽象类和抽象方法概述
- 基础_C# 继承,抽象类,密封类,类的多态性
- (教学思路 C#之类八)多态性:base、new、override、virtual
- c# 多态性
- 多态性(C# 编程指南)