继承是OOP(面向对象编程)的重要支柱。这是C#中的一种机制,通过该机制,一个类可以继承另一类的功能(字段和方法)。
重要术语:
- 超级类:继承其功能的类称为超级类(或基类或父类)。
- 子类:继承另一个类的类称为子类(或派生类,扩展类或子类)。除了超类的字段和方法之外,子类还可以添加自己的字段和方法。
- 可重用性:继承支持“可重用性”的概念,即,当我们要创建一个新类并且已经有一个包含某些所需代码的类时,我们可以从现有类中派生新类。通过这样做,我们可以重用现有类的字段和方法。
如何使用继承
用于继承的符号是: 。
句法:
class derived-class : base-class
{
// methods and fields
.
.
}
示例:在下面的继承示例中,GFG类是基类,GeeksforGeeks类是扩展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 GeeksforGeeks : GFG {
// constructor of derived class
public GeeksforGeeks()
{
Console.WriteLine("GeeksforGeeks");
}
}
// Driver class
class Sudo {
// Main Method
static void Main(string[] args)
{
// creating object of derived class
GeeksforGeeks g = new GeeksforGeeks();
// calling the method of base class
// using the derived class object
g.readers("Kirti", "C#");
}
}
}
输出:
GeeksforGeeks
Myself: Kirti
My Favorite Subject is: C#
C#中的继承类型
以下是C#在不同组合中支持的不同类型的继承。
- 单一继承:在单一继承中,子类继承一个超类的功能。在下图中,类A用作派生类B的基类。
- 多级继承:在多级继承中,派生类将继承基类,并且派生类还充当其他类的基类。在下图中,类A用作派生类B的基类,而基类又充当派生类C的基类。
- 层次继承:在层次继承中,一个类充当多个子类的超类(基类)。在下图中,类A用作派生类B,C和D的基类。
- 多重继承(通过接口):在多重继承中,一个类可以具有多个超类,并且可以从所有父类继承要素。请注意, C#不支持类的多重继承。在C#中,我们只能通过接口实现多重继承。在下图中,C类是从接口A和B派生的。
- 混合继承(通过接口):它是两种或多种上述继承类型的混合。由于C#不支持类的多重继承,因此类也无法实现混合继承。在C#中,我们只能通过接口实现混合继承。
有关C#中的继承的重要事实
- 默认超类:对象类除外,它没有超类,每个类只有一个,并且只有一个直接超类(单继承)。在没有其他任何显式超类的情况下,每个类都隐式为Object类的子类。
- 超类只能是一个:一个超类可以具有任意数量的子类。但是一个子类只能有一个超类。这是因为C#不支持类的多重继承。尽管具有接口,但C#支持多重继承。
- 继承构造函数:子类从其超类继承所有成员(字段,方法)。构造函数不是成员,因此它们不会被子类继承,但是可以从子类中调用超类的构造函数。
- 私有成员继承:子类不继承其父类的私有成员。但是,如果超类具有用于访问其私有字段的属性(get和set方法),则子类可以继承。