C#学习相关系列之abstract和virtual用法

本文详细介绍了C#中的抽象类、抽象方法、虚方法以及它们的用法、区别和应用场景,强调了面向接口编程的原则,以及override和new关键字在重写和隐藏基类方法中的应用。

一、abstract抽象类用法

1、抽象类的用途

        一个类设计的目的是用来被其他类继承的,它代表一类对象的所具有的公共属性或方法,那么这个类就应该设置为抽象类。

        抽象类是一种特殊的类,它不能被实例化,只能作为基类来派生出其它的具体类。抽象类使用abstract关键字来声明,其中可以包含抽象方法、虚方法、常规方法和属性。抽象类的主要作用是为其派生类提供一个通用的抽象基类。

        抽象方法是一种没有实现的方法,它只有定义并且声明,没有具体实现。抽象方法使用abstract关键字来声明,在抽象类中定义,而其具体实现必须在派生类中实现。抽象方法的主要作用是为其派生类提供一个统一的方法接口。

抽象类的使用场景:

  • 在类库中定义通用的抽象类作为基类,派生出具体的子类,可以提高代码的复用性,避免代码重复。
  • 在多态的环境下,使用抽象类和抽象方法定义统一的虚方法,可以让子类实现这些方法,减少繁琐的类型转换操作。
  • 抽象类和抽象方法的特点
  • 抽象类不能被实例化,只能用于派生具体类。
  • 抽象类可以包含抽象方法、虚方法、常规方法和属性。
  • 抽象方法必须在派生类中被实现,否则派生类也必须声明为抽象类。
  • 抽象方法必须被声明为public,因为派生类必须可以访问它。

2、抽象类的使用要求

  • abstract修饰符可用于类、方法、属性、索引和事件。
  • abstract修饰符用于简单地概括一个不完整的内容(摘要)。常用于基类,由派生类来继承实现基类的抽象属性和方法。
  • 抽象类是对具有相同行为和特征的抽象,抽象类中的成员不会指定具体细节,一般再其派生类中去实现具体内容。
  • 在普通类前加上abstract修饰符即可标注为抽象类。 如果一个普通类中对其成员使用了abstract修饰符,则该类必须修饰为抽象类。
  • 无法使用sealed修饰符来修改抽象类,因为两个修饰符的含义相反。sealed修饰符阻止类被继承,而abstract修饰符要求类被继承。
  • 继承抽象方法的派生类,必须实现override抽象类中的所有成员,用override重写来实现。
  • 抽象类无法被实例化,但可以让派生类实例化。
  • 抽象方法必须声明在抽象类中,声明抽象方法时,不能使用virtual、static、private修饰符。
  • 抽象方法声明不提供实际的声明,因此没有方法主体,和接口类似,和虚方法不一样。

3、抽象类和接口的区别

相同点:

1、不能实例化;

2、包含未实现的方法声明

3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)

不同点:

1、接口可以多继承,抽象类不能实现多继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值