一、abstract抽象类用法
1、抽象类的用途
一个类设计的目的是用来被其他类继承的,它代表一类对象的所具有的公共属性或方法,那么这个类就应该设置为抽象类。
抽象类是一种特殊的类,它不能被实例化,只能作为基类来派生出其它的具体类。抽象类使用abstract关键字来声明,其中可以包含抽象方法、虚方法、常规方法和属性。抽象类的主要作用是为其派生类提供一个通用的抽象基类。
抽象方法是一种没有实现的方法,它只有定义并且声明,没有具体实现。抽象方法使用abstract关键字来声明,在抽象类中定义,而其具体实现必须在派生类中实现。抽象方法的主要作用是为其派生类提供一个统一的方法接口。
抽象类的使用场景:
- 在类库中定义通用的抽象类作为基类,派生出具体的子类,可以提高代码的复用性,避免代码重复。
- 在多态的环境下,使用抽象类和抽象方法定义统一的虚方法,可以让子类实现这些方法,减少繁琐的类型转换操作。
- 抽象类和抽象方法的特点
- 抽象类不能被实例化,只能用于派生具体类。
- 抽象类可以包含抽象方法、虚方法、常规方法和属性。
- 抽象方法必须在派生类中被实现,否则派生类也必须声明为抽象类。
- 抽象方法必须被声明为public,因为派生类必须可以访问它。
2、抽象类的使用要求
- abstract修饰符可用于类、方法、属性、索引和事件。
- abstract修饰符用于简单地概括一个不完整的内容(摘要)。常用于基类,由派生类来继承实现基类的抽象属性和方法。
- 抽象类是对具有相同行为和特征的抽象,抽象类中的成员不会指定具体细节,一般再其派生类中去实现具体内容。
- 在普通类前加上abstract修饰符即可标注为抽象类。 如果一个普通类中对其成员使用了abstract修饰符,则该类必须修饰为抽象类。
- 无法使用sealed修饰符来修改抽象类,因为两个修饰符的含义相反。sealed修饰符阻止类被继承,而abstract修饰符要求类被继承。
- 继承抽象方法的派生类,必须实现override抽象类中的所有成员,用override重写来实现。
- 抽象类无法被实例化,但可以让派生类实例化。
- 抽象方法必须声明在抽象类中,声明抽象方法时,不能使用virtual、static、private修饰符。
- 抽象方法声明不提供实际的声明,因此没有方法主体,和接口类似,和虚方法不一样。
3、抽象类和接口的区别
相同点:
1、不能实例化;
2、包含未实现的方法声明
3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)
不同点:
1、接口可以多继承,抽象类不能实现多继承

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

被折叠的 条评论
为什么被折叠?



