.Net C# 抽象类

什么是抽象类

假设现在有个需求,是实现一个宝马类,有启动方法。

实现方法如下:

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~

猜你喜欢

转载自blog.csdn.net/q913777031/article/details/113105348