用代码例子来解释多态和抽象类
什么是多态,什么是抽象类,我发现好多3~5年的.net开发工程师对他的理解很弱。也就对面向对象理解很弱。本文就用代码来简单解释一下,如有错误的,还请纠正。
直接上源码地址
https://github.com/BigMaJx/OOPDemo
大家注意下面那段代码
第一,准备餐具和烹饪用了两个抽象方法
第二,洗碗用的是私有方法
对于吃饭的人来说,直接吃即可,
吃之前的准备工作和吃完的收尾工作都不用考虑。
/// <summary>
/// 抽象食物
/// </summary>
public abstract class FoodAbstract
{
private string Name { get; set; }
public FoodAbstract(string name)
{
Name = name;
}
/// <summary>
/// 准备餐具
/// </summary>
/// <returns></returns>
public abstract string PrepareTheTableware();
/// <summary>
/// 烹调
/// </summary>
/// <returns></returns>
public abstract string Cook();
/// <summary>
/// 刷碗
/// </summary>
/// <returns></returns>
private string BrushBowl()
{
return "吃完了,刷碗";
}
/// <summary>
/// 开吃
/// </summary>
/// <returns></returns>
public string BeginEat()
{
//这个地方 就很好的体现了多态
//不同食物要用不同的餐具
//不同的食物要用不同烹饪方法
//但是他们吃完后都得刷碗。为了简单体验,我们默认刷碗是一样的工程
StringBuilder sb = new StringBuilder();
sb.AppendLine(Name);
//获得餐具
sb.AppendLine(PrepareTheTableware());
//开始烹饪
sb.AppendLine(Cook());
//吃完刷碗
sb.AppendLine(BrushBowl());
return sb.ToString();
}
}