c# 抽象类,抽象方法使用(abstract)
2021-06-26 07:07
标签:开始 back sha 代码 高级 csharp 学习 space thread 入行一年多,在这个IT行业,开发技术主要使用的是.NET,而对应使用的高级语言自然就是c#了。从2017年7月入职后,在平时的工作过程中,只记得使用一些方法去完成逻辑功能,而很少去深究一些语法特性,特别是没有去关注为什么会去使用这些语法。现在,入职一家新公司,那就从现在开始,一有空就做一些学习记录,同时这也是一种分享,希望在园子里可以和大家多多交流。 平时在看项目代码的时候,经常看到Abstract这个关键字,但是我只是知道它该怎么用,却没有去关心为什么这么用。著名哲学家黑格尔曾经说过,“存在即合理。”而我们今天就一起来探讨一下Abstract(抽象)关键字的使用。 在百度百科中,对于抽象类的解释如下: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。 那现在我们来实现它。首先,我们新建一个控制台程序用来实现抽象方法。 然后新建一个抽象类:DoWork,注意,当一个类中有抽象方法的时候,这个类必须定义为抽象类。 我们在类中定义两个抽象方法。 然后定义一个类来继承这个抽象类,说明抽象类就是为了定义之后给别人继承的,而如果继承这个基类的派生类不想再抽象,就要去实现抽象类中的抽象方法。 我们定义一个类,InheritDoWork.class 来继承原先的类。 最后,我们在主程序program中来测试它。测试代码如下: 点击F5运行,执行结果如下。可以看到,我们在继承了抽象类后并且去实现了它。 总结:看到这里你难免会觉得这样的想法真是多此一举,因为我们可以直接定义一个类就可以去实现它,但是如果有很多个类都要实现同样的方法呢?那么我们还哦要在每一个类中都定义一次这样类似的方法?这样显然不太合适,因此,我们使用抽象类就是为了一次定义,然后允许别的类来继承它,这样每一个类只需要去实现自己想要的功能,而不用每一次都要去定义一次。 c# 抽象类,抽象方法使用(abstract) 标签:开始 back sha 代码 高级 csharp 学习 space thread 原文地址:https://www.cnblogs.com/wanchenggui/p/10112548.htmlc#中的抽象类的特征
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Learen_AbstractFunc
{
public abstract class DoWork
{
//定义一个抽象方法:奔跑
public abstract void DoRunnning();
//定义一个抽象方法:睡觉
public abstract void DoSleeping();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Learen_AbstractFunc
{
public class InheritDoWork : DoWork
{
public override void DoRunnning()
{
Console.WriteLine("实现了跑步的抽象方法");
Console.ReadKey();
}
public override void DoSleeping()
{
Console.WriteLine("实现了睡觉的抽象方法");
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Learen_AbstractFunc
{
class Program
{
static void Main(string[] args)
{
//实例化一个对象,因为抽象类无法被实例化
InheritDoWork dowork = new InheritDoWork();
Console.WriteLine("现在开始执行。。。");
Console.ReadKey();
Console.WriteLine("现在开始跑步");
//调用已经实现的抽象方法
dowork.DoRunnning();
Console.WriteLine("现在开始睡觉");
//调用已经实现的睡觉抽象方法
dowork.DoSleeping();
}
}
}