Tabla de contenido
¿Cómo funciona la herencia en C#?
¿Qué es la herencia en C#?
En C# usando herencia, una clase puede tomar o heredar las propiedades y métodos de otra clase. En otras palabras, permite la creación de una nueva clase a partir de una clase existente, lo que se conoce como clase base o superclase. Una clase formada después de tomar las propiedades de una clase base se llama una clase derivada o subclase.
Esta clase derivada en C# no solo toma propiedades de la clase base, sino que también puede agregar sus propias características únicas.
¿Cómo funciona la herencia en C#?
En C#, la herencia se logra mediante el uso de los dos puntos. (:) símbolo. El nombre de la clase base se define después de los dos puntos y lo especifica la clase derivada.
La siguiente es la sintaxis para crear una clase derivada que toma propiedades de la clase base:
clase clase derivada : BaseClass{
// miembros de clase derivados
}
Aquí en este código, Clase derivada es el nombre de la clase derivada, y BaseClass es el nombre de la clase base. El : El símbolo indica que DerivedClass hereda de BaseClass. Los miembros de DerivedClass pueden acceder a los miembros de BaseClass, siempre que no sean privados.
Tipos de herencia en C#
C# admite cuatro tipos de herencia: herencia única, multinivel, jerárquica y múltiple. Veamos cada tipo.
Herencia Única
La herencia única es el tipo de herencia más común, donde una clase derivada toma o hereda propiedades de una sola clase base.
Por ejemplo, el código dado explica la jerarquía de clases y demuestra los conceptos de herencia.
usando el sistema ;usando el sistema ;
coche de clase
{
público vacío Comenzar ( )
{
Consola. Línea de escritura ( 'Coche arrancado' ) ;
}
}
clase tesla : Auto
{
público vacío Acelerar ( )
{
Consola. Línea de escritura ( 'Tesla acelerando' ) ;
}
}
programa de clase
{
estático vacío Principal ( cadena [ ] argumentos )
{
Tesla miTesla = nuevo tesla ( ) ;
miTesla. Comenzar ( ) ; // Salida: Coche arrancado
miTesla. Acelerar ( ) ; // Salida: Tesla acelerando
}
}
En el código anterior, el clase de coche es la clase base y tiene un método llamado Comenzar() , que simplemente imprime el mensaje coche arrancado a la consola
El clase tesla se deriva de la clase Car y toma todas las propiedades de la clase Car. La clase Tesla agrega un método llamado Acelerar() , que imprime el mensaje Tesla acelerando a la consola
El Principal() define una instancia de la clase Tesla llamada miTesla y llama a sus métodos Start() y Accelerate().
Herencia multinivel
La herencia multinivel es donde una clase derivada hereda de otra clase derivada, que a su vez hereda de una clase base.
Por ejemplo, el siguiente código de C# demuestra la herencia y la anulación de métodos en una jerarquía de clases.
usando el sistema ;clase de animales
{
público vacío Comer ( )
{
Consola. Línea de escritura ( 'comer animales' ) ;
}
}
clase mamífero : Animal
{
público vacío Correr ( )
{
Consola. Línea de escritura ( 'Mamífero corriendo' ) ;
}
}
perro de clase : Mamífero
{
público vacío Ladrar ( )
{
Consola. Línea de escritura ( 'Perro ladrando' ) ;
}
}
programa de clase
{
estático vacío Principal ( cadena [ ] argumentos )
{
perro mi perro = Perro nuevo ( ) ;
Mi perro. Comer ( ) ; // Salida: Comer animales
Mi perro. Correr ( ) ; // Salida: Mamífero corriendo
Mi perro. Ladrar ( ) ; // Salida: perro ladrando
}
}
Aquí Perro es una clase derivada que hereda de Mamífero , que a su vez hereda de Animal . La clase Dog tiene acceso a todas las propiedades, métodos y comportamientos de Mammal y Animal, y también puede definir su propio método único. Ladrar() .
El clase de animales es la clase base y tiene un método llamado Comer() , que simplemente imprime el mensaje Animal comiendo en la consola.
El Clase de mamíferos se deriva de la clase Animal y agrega un método llamado Correr() , que imprime el mensaje Mammal running en la consola.
El clase de perro se deriva de la clase Mammal y agrega un método llamado Ladrar() , que imprime el mensaje Perro ladrando en la consola.
El método Main() crea una instancia de la clase Dog llamada Mi perro y llama a sus métodos Eat(), Run() y Bark().
Tenga en cuenta que los métodos Eat() y Run() no están definidos en la clase Dog, sino que se heredan de sus clases principales. Animal y Mamífero , respectivamente. El Ladrar() El método solo se define en la clase Perro.
Herencia jerárquica
En la herencia jerárquica, diferentes números de clases derivadas se heredan de una sola clase base. Por ejemplo:
usando el sistema ;forma de clase
{
público vacío Dibujar ( )
{
Consola. Línea de escritura ( 'Dibujo de forma' ) ;
}
}
círculo de clase : Forma
{
público vacío Llenar ( )
{
Consola. Línea de escritura ( 'Círculo de llenado' ) ;
}
}
plaza de clase : Forma
{
público vacío Color ( )
{
Consola. Línea de escritura ( 'Cuadrado para colorear' ) ;
}
}
programa de clase
{
estático vacío Principal ( cadena [ ] argumentos )
{
Círculo miCírculo = nuevo círculo ( ) ;
miCírculo. Dibujar ( ) ; // Salida: forma de dibujo
miCírculo. Llenar ( ) ; // Salida: Círculo de relleno
cuadrado mi cuadrado = nuevo cuadrado ( ) ;
miCuadrado. Dibujar ( ) ; // Salida: forma de dibujo
miCuadrado. Color ( ) ; // Salida: Cuadrado para colorear
}
}
En el código anterior, ambos Círculo y Cuadrado son clases derivadas que heredan de Forma . Tienen acceso al método Draw() definido en Shape y también pueden definir sus propios métodos únicos Fill() y Color().
Aquí creamos un objeto de la clase Circle llamado miCirculo y un objeto de la Cuadrado clase nombrada micuadrado . Entonces llamamos a la Dibujar() método, que se hereda de la clase Shape, en ambos objetos.
A continuación, llamamos a la Llenar() en myCircle, que es específico de la clase Circle, y el Color() método en mySquare, que es específico de la clase cuadrada.
La salida se imprimirá en la consola de la siguiente manera:
Herencia múltiple
La herencia múltiple es donde una clase derivada hereda de múltiples clases base. Sin embargo, C# no admite la herencia múltiple. Para lograr una funcionalidad similar, C# usa interfaces .
Conclusión
La herencia en C# permite que las clases hereden el comportamiento y la funcionalidad de las clases base. Usando herencia, podemos reutilizar código y crear un flujo jerárquico dentro del programa. Al comprender los diferentes tipos de herencia, se puede escribir un código más eficiente y organizado que sea más fácil de mantener y ampliar.