实例详解C抽象类及其用法.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实例详解C抽象类及其用法

实例解析C#抽象类 近来有很多童鞋问我有关抽象类的问题,很多初学者不明白为什么要有抽象类,什么情况下使用抽象类。网上搜了下,还真的没多少文章讲此类问题,那么我就在这里简单讲下,鉴于各类书籍、论坛、帖子上有关C#抽象类的语法现象解释的已经足够清楚了,我在这里就只说下抽象类在什么情况下用,举几个例子,并总结了一些C#抽象类的注意要点,供大家参考。 我想大家都打过CS吧!(什么,没打过?拖出去)假如我们现在要开发一个模拟CS的游戏。我们的业务很简单,要求如下: 游戏中要有恐怖分子,一个恐怖分子一次只能持有一支枪 游戏中有多种枪支 恐怖分子可以选择枪支使用 恐怖分子可以开枪杀人 仅此4条,为了使程序足够简单,能说明我们主要目标就行,所以我们用控制台程序来模拟实现。 方法1 我们先来看第一种实现情况,假设,游戏中现在有手枪(Pistol)和步枪(Rifle),那么我们必然需要有对应的两个枪械的类。 //手枪类 public class Pistol { public void Shoot() { Console.WriteLine(手枪开始射击:叭叭叭); } } //步枪类 public class Rifle { public void Shoot() { Console.WriteLine(步枪开始射击:哒哒哒。。); } } 有了枪械,就可以来实现游戏中的恐怖分子了。业务清单中有一条,匪徒可以选择所用枪支,那么,我们的类可能就需要实现为下边的情况。 //恐怖分子类 public class Terrorist { private Pistol pistol; private Rifle rifle; public void SetGun(object gun) //换枪 { if (gun is Pistol) { pistol = (Pistol)gun; //只能拿一支枪,在拿手枪的同时, rifle = null; 要让步枪为null } else { rifle = (Rifle)gun; pistol = null; } } public void KillEnemy() { Console.WriteLine(恐怖分子开始杀人!); if (rifle == null) { pistol.Shoot(); } else { rifle.Shoot(); } } } 如果运行游戏,还需要有个表示层。我们这样来调用这写类: class Program { static void Main(string[] args) { Terrorist laDeng = new Terrorist();//new出来一个拉登 laDeng.SetGun(new Pistol());//给他一支手枪 laDeng.KillEnemy();//拉登开枪 laDeng.SetGun(new Rifle()); laDeng.KillEnemy(); } } 好了,程序写到这里就基本实现了我们的业务要求,我们来分析下程序的结构关系,类图是个好的工具,我已经画出来了,请看。 其中,带减号“-”的表示是private的,加号“+”的表示是public的。我们可以发现Terrorist和两个枪支类Rifle以及Pistol是一种依赖关系。 那么这样实现我们的控制台版的CS游戏好不好呢? Absolutely不好!!! 假如,游戏上线1个月,我们需要更新枪支来吸引新老玩家,我们想要增添一款狙击步枪AWP。好吧,我是一个OO程序员,这难不倒我,我只需要添加一个AWP类: public class AWP { public void Shoot() { Console.WriteLine(AWP开始射击:

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档