狗咬猫猫咬耗子猫叫耗子叫:首先我们想到的类就有三个:狗、猫、耗子我们再为它定义一个父类:动物父类我们定义成抽象类
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#多态继承