当前位置:编程学习 > C#/ASP.NET >>

从面试题狗咬猫猫咬耗子猫叫耗子叫来理解多态

狗咬猫猫咬耗子猫叫耗子叫:首先我们想到的类就有三个:狗、猫、耗子

我们再为它定义一个父类:动物

父类我们定义成抽象类
abstract class Animal //定义一个抽象类Animal(动物)
{
public abstract void say();//我们在这里定义个叫(say)这个方法,动物都是会叫的嘛
public void bark(Animal an) //这里定义一个咬方法(bark)动物也是会咬人哦
{
an.say();// 动物被咬了自然就会叫,所以这里需要执行叫这个方法
}
 }

class Cat : Animal //定义一个猫类,猫属于动物,继承自动物类
{
public override void say()//实现抽象方法
{
Console.WriteLine("喵"); //猫叫
}
 }

class Dog : Animal //同样继承自动物类
{
public override void say()//实现抽象方法
{
Console.WriteLine("汪汪");
 }

}
class Mouse : Animal //继承动物类
{
public override void say()//实现抽象方法
{
Console.WriteLine("唧唧");
 }
 }

static void Main(string[] args)
 {
 Cat c1 = new Cat(); //创建猫对象,以下同样
Dog d1 = new Dog();
 Mouse m1 = new Mouse();
 List<Animal> list = new List<Animal>();//创建一个动物集合
list.Add(c1);//猫属于动物,因此可以加入动物集合
list.Add(d1);
 list.Add(m1);
 //foreach (Animal a in list)
 //{
 //    a.say();//狗猫耗子轮流叫。注意这里调用的不是抽象类的say()方法,而是子类的
//}
d1.bark(c1);//狗咬猫,猫叫(喵)
Console.ReadKey();
 }

原文连接及Demo下载地址:http://www.qqruoshui.com/index.php/from-the-interview-questions-to-understand-polymorphism/ 面试题 类 C# 多态 继承 --------------------编程问答-------------------- 喵 --------------------编程问答-------------------- 喵 --------------------编程问答-------------------- 无聊的题目,这种题目只能增加概念上的混淆,没什么帮助, --------------------编程问答-------------------- 除
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,