Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->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(); } } }
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public class Animal { public virtual void Eat() { Console.WriteLine("Animal eat"); } }
public class Cat : Animal { public new void Eat() { Console.WriteLine("Cat eat"); } }
class Tester { static void Main(string[] args) { Animal a = new Animal(); a.Eat();
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public class Animal { public virtual void Eat() { Console.WriteLine("Animal eat"); } }
public class Dog : Animal { public override void Eat() { Console.WriteLine("Dog eat"); } }
public class WolfDog : Dog { public override void Eat() { Console.WriteLine("WolfDog eat"); } }
class Tester { static void Main(string[] args) { Animal[] animals = new Animal[3];
animals[0] = new Animal(); animals[1] = new Dog(); animals[2] = new WolfDog();
for (int i = 0; i < 3; i++) { animals[i].Eat(); } } }
運(yùn)行結(jié)果為: Animal eat... Dog eat... WolfDog eat...
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> public abstract class Animal { public abstract void 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"); } }
public class WolfDog : Dog { public override void Eat() { Console.WriteLine("Wolfdog eat"); } }
class Tester { static void Main(string[] args) { Animal[] animals = new Animal[3];
animals[0] = new Cat(); animals[1] = new Dog(); animals[2] = new WolfDog();
for (int i = 0; i < animals.Length; i++) { animals[i].Eat(); } } }
運(yùn)行結(jié)果為: Cat eat... Dog eat... Wolfdog eat... 從上面可以看出,通過(guò)使用abstract-override可以和virtual-override一樣地實(shí)現(xiàn)多態(tài),包括多層繼承也是一樣的。不同之處在于,包含虛擬方法的類可以被實(shí)例化,而包含抽象方法的類不能被實(shí)例化。 以上就是我對(duì)c#中多態(tài)的一些淺薄的認(rèn)識(shí),如有錯(cuò)誤的地方,歡迎批評(píng)指正!