什么是抽象类
假设现在有个需求,是实现一个宝马类,有启动方法。
实现方法如下:
public class BM
{
public string Name { get; set; } = "宝马";
public void Start()
{
Console.WriteLine(Name + "启动了!");
}
}
假设我们还需要实现一个马自达类,有启动方法
public class MZD
{
public string Name { get; set; } = "马自达";
public void Start()
{
Console.WriteLine(Name + "启动了!");
}
}
仔细观察两个类,是不是基本一模一样?如果我们还要加各大汽车品牌的类呢?是不是重复重复·····
当然这样也可以实现。可当你辛辛苦苦实现,甲方爸爸说加个停止方法,你是不是懵逼了?
所以,我们可以尝试个思路,将公共的地方提取出来,公用。
具体代码如下:
public abstract class Car
{
public string Name { get; set; }
public void Start()
{
Console.WriteLine(Name + "启动了!");
}
}
public class BM : Car
{
public BM()
{
Name = "宝马";
}
}
public class MZD : Car
{
public MZD()
{
Name = "马自达";
}
}
注意:因为这个是抽象出来的类,所以需要添加abstract
关键字。
然后我们在控制台调用
class Program
{
static void Main(string[] args)
{
Car bm = new BM();
bm.Start();
Car mzd = new MZD();
mzd.Start();
Console.ReadKey();
}
}
输出结果:
宝马启动了!马自达启动了
所以,抽象类就是声明从相似的类提取的属性、方法、事件等成员,因为抽象类包含有默认实现方法,所以可以有效地减少代码量。
抽象类的特性
-
不能被实例化;
-
抽象类可以包括抽象方法,这是其他普通类所不能的;
-
抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖他们;
-
抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们;
后记
本人不是大佬,只是道路先行者,在落河后,向后来的人大喊一声,这里有坑,不要过来啊!
纵然如此,依旧有人重复着落河,重复着呐喊······
个人博客网站 Blog
技术交流Q群: 1012481075 群内有各种流行书籍资料
文章后续会在公众号更新,微信搜索 OneByOneDotNet 即可关注。
你的一分鼓励,我的十分动力,点赞免费,感恩回馈。喜欢就点赞评论吧,双击6666~