本帖最后由 王晨 于 2012-12-26 10:02 编辑
多态是面向对象思想"三大特征之一,其余两个分别是封装和继承;它是一种机制、一种能力,而非某个关键字。它在类的继承中得以实现,在类的方法调用中得以体现。
通过下面这个例子就很明显看出来了,例如:
- <FONT size=3>public class Animal
- {
- public virtual void Eat()
- {
- Console.WriteLine("Animal eat");
- }
- }
- public class Cat : Animal
- {
- public override void Eat()
- {
- Console.WriteLine("Cat eat");
- }
- }
- public class Dog : Animal
- {
- public override void Eat()
- {
- Console.WriteLine("Dog eat");
- }
- }
- class Tester
- {
- static void Main(string[] args)
- {
- Animal[] animals = new Animal[3];
- animals[0] = new Animal();
- animals[1] = new Cat();
- animals[2] = new Dog();
- for (int i = 0; i < 3; i++)
- {
- animals[i].Eat();
- }
- }
- }</FONT>
复制代码 virtual 关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写;默认情况下,方法是非虚拟的。不能重写非虚方法。
virtual 修饰符不能与 static、abstract, private 或 override 修饰符一起使用。
override 方法提供从基类继承的成员的新实现。由 override 声明重写的方法称为重写基方法。重写的基方法必须与 override 方法具有相同的签名。
重写的基方法必须是vitural,override,abstract类型的 ,不能重写非虚方法或是静态方法;所以override不能与vitural,new,static同时使用
|