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

2021年4月11日16:03:31 发表评论 678 次浏览

继承是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#继承介绍和使用示例1

多级继承:

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

OOP编程:C#继承介绍和使用示例2

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

OOP编程:C#继承介绍和使用示例3

多重继承(通过接口):

在多重继承中, 一个类可以具有多个父类, 并且可以从所有父类继承要素。请注意

C#不支持多重继承

与类。在C#中, 我们只能通过接口实现多重继承。在下图中, C类是从接口A和B派生的。

OOP编程:C#继承介绍和使用示例4

混合继承(通过接口):

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

OOP编程:C#继承介绍和使用示例5

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

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

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: