- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实例详解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)