OOP编程(C#继承介绍和使用示例)

【OOP编程(C#继承介绍和使用示例)】继承是OOP(面向对象编程)的重要支柱。这是C#中的一种机制, 通过该机制, 一个类可以继承另一类的功能(字段和方法)。
重要术语:

  • 超类:继承了其功能的类称为超类(或基类或父类)。
  • 子类:继承另一个类的类称为子类(或派生类, 扩展类或子类)。除了超类的字段和方法, 子类还可以添加自己的字段和方法。
  • 可重用性:继承支持"可重用性"的概念, 即, 当我们要创建一个新类并且已经有一个包含某些所需代码的类时, 我们可以从现有类中派生新类。通过这样做, 我们可以重用现有类的字段和方法。
如何使用继承
用于继承的符号是:.
语法如下:
class derived-class : base-class { //methods and fields . . }

例子:在下面的继承示例中, GFG类是基类, lsbin类是对GFG类进行扩展的派生类, 而Sudo类是用于运行程序的驱动程序类。
//C# program to illustrate the //concept of inheritance using System; namespace ConsoleApplication1 {//Base class class GFG {//data members public string name; public string subject; //public method of base class public void readers( string name, string subject) { this .name = name; this .subject = subject; Console.WriteLine( "Myself: " + name); Console.WriteLine( "My Favorite Subject is: " + subject); } }//inheriting the GFG class using : class lsbin : GFG {//constructor of derived class public lsbin() { Console.WriteLine( "lsbin" ); } }//Driver class class Sudo {//Main Method static void Main( string [] args) {//creating object of derived class lsbin g = new lsbin(); //calling the method of base class //using the derived class object g.readers( "Kirti" , "C#" ); } } }

输出如下:
lsbin Myself: Kirti My Favorite Subject is: C#

C#中的继承类型
以下是C#以不同组合支持的不同类型的继承。
单一继承:
在单一继承中, 子类继承一个超类的功能。在下图中, 类A用作派生类B的基类。
OOP编程(C#继承介绍和使用示例)

文章图片
多级继承:
在"多级继承"中, 派生类将继承基类, 并且派生类还充当其他类的基类。在下图中, 类A用作派生类B的基类, 而基类又充当派生类C的基类。
OOP编程(C#继承介绍和使用示例)

文章图片
层次继承:在层次继承中, 一个类充当多个子类的超类(基类)。在下图中, 类A用作派生类B, C和D的基类。
OOP编程(C#继承介绍和使用示例)

文章图片
多重继承(通过接口):
在多重继承中, 一个类可以具有多个父类, 并且可以从所有父类继承要素。请注意
C#不支持多重继承
与类。在C#中, 我们只能通过接口实现多重继承。在下图中, C类是从接口A和B派生的。
OOP编程(C#继承介绍和使用示例)

文章图片
混合继承(通过接口):
它是上述继承类型中的两种或多种的混合。由于C#不支持类的多重继承, 因此类也无法实现混合继承。在C#中, 我们只能通过接口实现混合继承。
OOP编程(C#继承介绍和使用示例)

文章图片
有关C#中的继承的重要事实
  • 默认超类:除了没有超类的Object类之外, 每个类都只有一个并且只有一个直接超类(单继承)。在没有其他任何显式超类的情况下, 每个类都隐式为Object类的子类。
  • 超类只能是以下一种:一个超类可以具有任意数量的子类。但是子类只能具有一超类。这是因为C#不支持类的多重继承。尽管具有接口, 但C#支持多重继承。
  • 继承构造函数:子类从其超类继承所有成员(字段, 方法)。构造函数不是成员, 因此它们不会被子类继承, 但是可以从子类调用超类的构造函数。
  • 私有成员继承:子类不继承其父类的私有成员。但是, 如果超类具有用于访问其私有字段的属性(get和set方法), 则子类可以继承。

    推荐阅读