设计一个电脑游戏,游戏中有猪、牛、兔子、青蛙、鸭子等动物,这些动 物都继承于Vertebrata 类(脊椎动物类),Vertebrata类有一个抽象方法Display(),每个动 物都从Vertebrata 类那里继承并重写了Display()方法,用来把动物本身画在屏幕上。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DuTai
{
internal class Program
{
static void Main(string[] args)
{
// 声明一个基类(Vertebrata 类)的引用符数组
Vertebrata[] animals = new Vertebrata[5];
// 让每个引用符指向一个派生类对象
animals[0] = new Pig();
animals[1] = new Rabbit();
animals[2] = new Cattle();
animals[3] = new Frog();
animals[4] = new Duck();
//通用处理
foreach (Vertebrata someone in animals)
{
someone.Display(); //不论对象是什么类型,都使用相同的语句处理
}
Console.ReadKey();
}
}
//脊椎动物总类
abstract class Vertebrata
{
public abstract void Display();//抽象方法:绘图
//其他成员
//......;
//......;
}
//哺乳动物(副总)类
class Mammal : Vertebrata
{
public override void Display() //重写方法:绘图
{
}
}
//鸟类(副总类) ,继承于脊柱动物(总)类
class Bird : Vertebrata
{
//重写方法:绘图
public override void Display()
{
}
}
//两栖动物(副总类),继承于脊柱动物(总)类
class Amphibian : Vertebrata
{
//重写方法:绘图
public override void Display()
{
}
}
//猪类 ,继承于哺乳动物(副总)类
class Pig : Mammal
{
public override void Display()// //重写方法:绘图
{
Console.WriteLine(@" ╭︿︿☆╮ oοΟ
{/ . .\}
( (oo) )
︶︶︶
我是笨猪我怕谁 ");
}
}
//兔子类 ,继承于哺乳动物(副总)类
class Rabbit : Mammal
{
//重写方法:绘图
public override void Display()
{
Console.WriteLine(@" (\(\ /)/)
(-.-)(-.-)
小兔子乖乖");
}
}
//牛类 ,继承于哺乳动物(副总)类
class Cattle : Mammal
{ //重写方法:绘图
public override void Display()
{
Console.WriteLine(@" (___)
(o o)____(
@@ ` \
\ ____, /
// //
^^ ^^
勤劳的牛");
}
}
//青蛙类 ,继承于两栖动物(副总类)
class Frog : Amphibian
{
//重写方法:绘图
public override void Display()
{
Console.WriteLine(@" @..@
(\--/)
(.>__<.)
^^^ ^^^
青蛙王子");
}
}
//鸭子类 ,继承于鸟类(副总类)
class Duck : Bird
{
//重写方法:绘图
public override void Display()
{
Console.WriteLine(@" __
>(' )
)/
/(
/ `----/
\ ~=- /
~^~^~^~^~^~^~^
春江水暖鸭先知");
}
}
}
启动程序:
程序中的foreach语句是 通用部分,Vertebrata 型引用符someone依次指向数组animals中的 对象,不管对象是哪种动物,都使用语句“someone.Display()”进 行绘图。系统根据 someone 指向的动物类型调用对应版本的 Display()方法。当添加一种新的动物时,只需要往数组里添加一个 对象,程序的通用部分不需要修改。
继承和多态性是开发复杂软件的关键技术,特别适合于分层软 件系统。操作系统要处理各种各样的存储介质,比如硬盘、软盘、 U盘等等,这些硬件的具体工作原理显然是不同的,但它们都有读 和写两个操作。操作系统可以设计一个抽象基类,提供 Read()和 Write()两个抽象函数,各种硬件的驱动程序被编写为该抽象基类的 派生类,具体实现Read()和Write()操作。操作系统只需通过基类的 引用符调用Read()和Write()函数即可,不用关心在读取哪种存储介 质,更不用关心它们是怎么实现的。当有新设备产生以后,设备生 产厂家只需编写继承于抽象基类的驱动程序即可,不用更改操作系 统本身。