设计一个电脑游戏,游戏中有猪、牛、兔子、青蛙、鸭子等动物,这些动 物都继承于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()函数即可,不用关心在读取哪种存储介 质,更不用关心它们是怎么实现的。当有新设备产生以后,设备生 产厂家只需编写继承于抽象基类的驱动程序即可,不用更改操作系 统本身。