- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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开始射击:
您可能关注的文档
- 场地与设计.doc
- 地震等自然灾害应急预案及处理流程.doc
- 场地经验总结.doc
- 型综合医院建筑暖通空调系统.doc
- 城市生活垃圾中电池危害及分选工艺探讨.doc
- 场地分析图常用技巧大列举,总有一款适合你.doc
- 城镇化与新农村建设的关系研究开题报告.doc
- 城市色彩特征分析.doc
- 基因突变习题.doc
- 基础专题复习二单质氧化物.doc
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)