狗咬猫猫咬耗子猫叫耗子叫:首先我们想到的类就有三个:狗、猫、耗子我们再为它定义一个父类:动物父类我们定义成抽象类
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#多态继承
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#多态继承
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货