📜  C#|遗产

📅  最后修改于: 2021-05-29 22:54:17             🧑  作者: Mango

继承是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#在不同组合中支持的不同类型的继承。

    1. 单一继承:在单一继承中,子类继承一个超类的功能。在下图中,类A用作派生类B的基类。

    2. 多级继承:在多级继承中,派生类将继承基类,并且派生类还充当其他类的基类。在下图中,类A用作派生类B的基类,而基类又充当派生类C的基类。

    3. 层次继承:在层次继承中,一个类充当多个子类的超类(基类)。在下图中,类A用作派生类B,C和D的基类。

    4. 多重继承(通过接口):在多重继承中,一个类可以具有多个超类,并且可以从所有父类继承要素。请注意, C#不支持类的多重继承。在C#中,我们只能通过接口实现多重继承。在下图中,C类是从接口A和B派生的。

    5. 混合继承(通过接口):它是两种或多种上述继承类型的混合。由于C#不支持类的多重继承,因此类也无法实现混合继承。在C#中,我们只能通过接口实现混合继承。

    有关C#中的继承的重要事实

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