C#(19) 抽象类和抽象方法,接口
抽象类和抽象方法
抽象类
概念:被抽象出来的类
抽象这个概念在哲学、艺术、数学和计算机科学中都有广泛的应用。简单来说,抽象是将具体事物或现象的共同特征提炼出来,而忽略细节和个别差异的过程。
打个比方,为什么鸟叫鸟,因为它有翅膀(外貌特征),它得会飞吧(行为特征),但是翅膀长啥样,怎么飞,这些就是根据固定的鸟群来改变的,那我们现在抽象出来的抽象类只用形容鸟为什么是鸟就行了,至于它翅膀怎么样,飞怎么样,不是这里应该操心的,而是继承的子类应该关心的东西。
关键字:abstract
特点:
- 是不能被实例化的类,其实就是用来给其他类继承的。
- 遵循里氏替换原则
- 可以包含抽象方法
- 继承抽象类,必须实现里面的抽象方法
抽象函数(纯虚方法)
概念:只写有什么,不写具体
还是那个例子,鸟只要会飞就行,怎么飞不用管 。
关键字:abstract
特点:
- 只能在抽象类中声明
- 没有方法具体
- 不能是私有的(具体原因你可以思考一下)
- 继承后必须实现,用override重写
ps:虚方法和抽象方法都可以被子类无限重写。
示例
我们还是用鸟儿那个例子。希望你能感受到抽象类和抽象方法的使用,概念不难,我相信你能很快学会。
using System;
namespace BirdExample
{
// 抽象类 Bird
public abstract class Bird
{
// 鸟儿的名称
public string Name { get; set; }
// 鸟儿的翼展
public double WingSpan { get; set; }
// 构造函数
protected Bird(string name, double