这里随便说说多态,看了上面继承再看看这篇。
多态:通过继承实现的不同对象调用相同的方法,表现出不同的行为。
之前的前台调用代码如下:
1 namespace ConsoleApplication7 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 Dog dog = new Dog(); 8 dog.Name = "骨头"; 9 dog.Show(); 10 //输出结果// 小狗喜欢吃:骨头 11 12 13 Cat cat = new Cat(); 14 cat.Name = "鱼"; 15 cat.Show(); 16 //输出结果// 小猫喜欢吃:鱼 17 18 Mouse mouse = new Mouse(); 19 mouse.Name ="大米"; 20 mouse.Show(); 21 //输出结果// 老鼠喜欢吃:鱼 22 23 Panda panda = new Panda(); 24 panda.Name = "竹子"; 25 panda.Show(); 26 //输出结果// 熊猫喜欢吃:鱼 27 28 Console.ReadKey(); 29 30 } 31 } 32 }
如你所见,每个动物类都是一个对象
狗的对象:dog
猫的对象:cat
老鼠的对象:mouse
熊猫的对象:panda
要让这些动物实现输出show()方法,你就要声明每一个对象,而上面说了,多态是:不同对象调用相同的方法,表现出不同的行为。
而且各种动物类都继承了Animal类,于是代码变成这样:
1 namespace ConsoleApplication7 2 { 3 public class Animal 4 { 5 protected string name; 6 public string Name 7 { 8 get { return name; } 9 set { name = "新鲜的" + value; } 10 } 11 public virtual void Show() 12 { 13 Console.WriteLine("我是各种动物的父类"); 14 } 15 } 16 17 public class Cat : Animal 18 { 19 public override void Show() 20 { 21 Console.WriteLine("小猫喜欢吃:" + name); 22 } 23 } 24 25 public class Dog : Animal 26 { 27 public override void Show() 28 { 29 Console.WriteLine("小猫喜欢吃:" + name); 30 } 31 } 32 33 public class Mouse : Animal 34 { 35 public override void Show() 36 { 37 Console.WriteLine("老鼠喜欢吃:" + name); 38 } 39 } 40 41 public class Panda : Animal 42 { 43 public override void Show() 44 { 45 Console.WriteLine("熊猫喜欢吃:" + name); 46 } 47 } 48 49 }
前台代码:
1 namespace ConsoleApplication7 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 8 Animal animal; 9 animal = new Dog(); 10 animal.Name = "骨头"; 11 animal.Show(); 12 13 animal = new Cat(); 14 animal.Name = "鱼"; 15 animal.Show(); 16 17 animal = new Mouse(); 18 animal.Name = "大米"; 19 animal.Show(); 20 21 animal = new Panda(); 22 animal.Name = "熊猫"; 23 animal.Show(); 24 25 Console.ReadKey(); 26 27 } 28 } 29 }
结果:
小狗喜欢吃:新鲜的骨头
小猫喜欢吃:新鲜的鱼
老鼠喜欢吃:新鲜的大米
熊猫喜欢吃:新鲜的竹子
animal对象被赋值不同的实例,但是animal只调用Show()方法就得到不同的结果。
时间: 2024-10-30 07:19:59