C#系列之抽象类和抽象方法

抽象类是使用abstract关键字定义、不能实例化的类,可包含抽象方法。抽象方法是无实现的、必须被子类重写的方法。抽象类用于封装共同特性,提供统一接口,而抽象方法定义行为规范。不希望被实例化且需子类定制行为时,使用抽象类和抽象方法。在整体框架设计中,它们起到关键作用。
摘要由CSDN通过智能技术生成

目录

1.抽象类

2.抽象方法


1.抽象类

概念:抽象关键字abstract修饰的类。

特点:不能被实例化的类,可以包含抽象方法,继承抽象类必须重写抽象方法。

抽象类中,封装的所有知识点都可以在里面书写。可以在抽象类中写抽象函数。

abstract class Thing
{
public string name;
//所有封装知识点都可以书写
//可以在抽象类中写抽象函数
}

class Water:Thing
{

}

抽象类不能够实例化,但是可以遵循里氏替换原则,用父类装子类,例如:

Thing t=new Water();

2.抽象方法

抽象方法就是abstract修饰的方法,与虚函数相同,必须被访问,不能是private,抽象方法没有方法体,无大括号{}!只能在抽象类中声明,否则报错!

抽象方法又叫纯虚方法,用abstract修饰,继承后必须实现,用override重写。

举例

abstract class Fruits
{
  public string name;
  //抽象方法是一定不能有方法体的
  public abstract void Bad();
}

class Apple:Fruits
{
  public override void Bad()
  {
     throw new NotImplementedException();
  }
}

与虚方法不同,必须实现否则报错而虚方法可以选择写逻辑,抽象方法不行。抽象方法必须实现,虚方法可以在任何类中声明,而抽象方法不行。

子类的子类就不必要选择抽象方法了,当然也可以选择抽象实现,抽象方法可以无限被子类重写。

注意

如何选择普通类和抽象类?

不希望被实例化的对象相对比较抽象的类就选择使用抽象类。父类中的行为不太需要被实现的,只希望子类去定义规则可以选择抽象类,然后使用其中的抽象方法来定义规则。

作用:在整体框架设计时会使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nicole Potter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值