关于C#中抽象类的一些感想
写代码已经有很长一段时间, 但感觉成长很少,基本是为了功能开发而开发,我相信80%的程序员都一样,基本都是拿网上的开源项目改改改后实现功能就行, 很少会去深入,去思考为什么要这么来实现,所以有了今天的文章,我作为程序员小白鼠把C#中的抽象类学习中的感想跟大家分享一下:
- 什么是抽象类
- 抽象类的应用场景
- 实例代码
1.什么是抽象类
我先来个百度百科的词条解释吧
- 抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象`
c#中的抽象类的特征
- 抽象类不能实例化。
- 抽象类可以包含抽象方法和抽象访问器。
- 不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继 承,而 abstract 修饰符要求对类进行继承。
- 从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。
其实这些都是废话,我感觉一点都理解不了,我觉得用简单的话来说抽象类的功能就是:我是老子(抽象类),你要是跟了(继承)老子,你就必须得会干什么(实际实现)
举个场景就是:老子会打人,那你也必须会打人,但你是轻轻的打,还是狠狠的打,你自己决定,但你必须得会打人。
抽象类的应用场景
如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧
实例代码
1.先建一个BaseClass的抽象类,例如:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace absract_learn
{
public abstract class BaseClass
{
public abstract void Eat(); // 抽象方法-吃饭
public abstract void Walk(); // 抽象方法-走路
public abstract void Speak(); // 抽象方法-说话
}
}
2.建一个human的普通类继承抽象类,例如:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace absract_learn
{
public class human : BaseClass
{
public void Eat()//实现吃饭
{
Console.WriteLine("I can eat");
}
public void Walk()//实现走路
{
Console.WriteLine("I can walk");
}
public void Speak()//实现说话
{
Console.WriteLine("I can speak");
}
}
}
3.最后在Main函数里面具体调用方法,例如:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace absract_learn
{
class Program
{
static void Main(string[] args)
{
human man = new human();
Console.WriteLine(man.Walk);
Console.ReadKey();
}
}
}
写在最后的话
其实很多人都会像我一样,看这样的代码感觉在脱裤子放屁,我直接创建方法也一样的实现啊,但是优秀的人做的优秀的方法肯定是有他的道理的,而且编程真的不能只看不写,强迫自己按照这样的模式来写,慢慢的你也就变成优秀的人了。