C# | Herencia – Part 3

La herencia es un pilar importante de OOP (Programación Orientada a Objetos). Es el mecanismo en C# por el cual una clase puede heredar las características (campos y métodos) de otra clase.

Terminología importante:

  • Superclase: la clase cuyas características se heredan se conoce como superclase (o clase base o clase principal).
  • Subclase: la clase que hereda la otra clase se conoce como subclase (o una clase derivada, una clase extendida o una clase secundaria). La subclase puede agregar sus propios campos y métodos además de los campos y métodos de la superclase.
  • Reutilización: la herencia admite el concepto de «reutilización», es decir, cuando queremos crear una nueva clase y ya existe una clase que incluye parte del código que queremos, podemos derivar nuestra nueva clase de la clase existente. Al hacer esto, estamos reutilizando los campos y métodos de la clase existente.

Cómo usar la herencia

El símbolo utilizado para la herencia es : .
Sintaxis:

class derived-class : base-class  
{  
   // methods and fields  
   .
   .
}  

Ejemplo: en el siguiente ejemplo de herencia, la clase GFG es una clase base, la clase GeeksforGeeks es una clase derivada que amplía la clase GFG y la clase Sudo es una clase de controlador para ejecutar el programa.

// 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#");
    }
}
}

Producción:

GeeksforGeeks
Myself: Kirti
My Favorite Subject is: C#

Tipos de herencia en C#

A continuación se muestran los diferentes tipos de herencia que admite C# en diferentes combinaciones.

  1. Herencia única: en la herencia única, las subclases heredan las características de una superclase. En la imagen a continuación, la clase A sirve como clase base para la clase B derivada.

  2. Herencia multinivel: en la herencia multinivel, una clase derivada heredará una clase base y, además, la clase derivada también actuará como la clase base para otra clase. En la imagen de abajo, la clase A sirve como clase base para la clase B derivada, que a su vez sirve como clase base para la clase C derivada.

  3. Herencia jerárquica: en la herencia jerárquica, una clase sirve como superclase (clase base) para más de una subclase. En la imagen de abajo, la clase A sirve como clase base para las clases derivadas B, C y D.
  4. Herencia múltiple (a través de interfaces): en la herencia múltiple, una clase puede tener más de una superclase y heredar características de todas las clases principales. Tenga en cuenta que C# no admite la herencia múltiple con clases. En C#, podemos lograr la herencia múltiple solo a través de interfaces. En la imagen a continuación, la Clase C se deriva de la interfaz A y B.

  5. Herencia híbrida (a través de interfaces): es una combinación de dos o más de los tipos de herencia anteriores. Dado que C# no admite herencia múltiple con clases, la herencia híbrida tampoco es posible con clases. En C#, podemos lograr la herencia híbrida solo a través de interfaces.

Datos importantes sobre la herencia en C#

  • Superclase predeterminada : excepto la clase Object, que no tiene superclase, cada clase tiene una y solo una superclase directa (herencia única). En ausencia de cualquier otra superclase explícita, cada clase es implícitamente una subclase de la clase Object.
  • La superclase solo puede ser una: una superclase puede tener cualquier número de subclases. Pero una subclase solo puede tener una superclase. Esto se debe a que C# no admite la herencia múltiple con clases. Aunque con interfaces, C# admite la herencia múltiple.
  • Herencia de constructores: una subclase hereda todos los miembros (campos, métodos) de su superclase. Los constructores no son miembros, por lo que las subclases no los heredan, pero el constructor de la superclase se puede invocar desde la subclase.
  • Herencia de miembros privados: una subclase no hereda los miembros privados de su clase principal. Sin embargo, si la superclase tiene propiedades (métodos get y set) para acceder a sus campos privados, entonces una subclase puede heredar.

Publicación traducida automáticamente

Artículo escrito por Kirti_Mangal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *