La herencia es la capacidad de cualquier clase para extraer y utilizar características de otras clases. Es el proceso mediante el cual se crean nuevas clases llamadas clases derivadas a partir de clases existentes llamadas clases base . El concepto básico aquí es que el programador puede usar las características de una clase en otra sin declarar o definir lo mismo una y otra vez en diferentes clases. En lugar de escribir las funciones miembro durante cada declaración de clase, podemos heredarlas de la clase base. La herencia es una de las características más importantes de la Programación Orientada a Objetos.
Subclase: La clase que hereda propiedades de otra clase se denomina Subclase o Clase Derivada.
Súper Clase: La clase cuyas propiedades son heredadas por subclase se llama Clase Base o Súper clase
El concepto más básico de herencia es crear o derivar una nueva clase utilizando otra clase como base.
Clase base y clase derivada
La clase base se usa para derivar subclases heredadas adicionales conocidas como clases derivadas . Puede haber múltiples clases derivadas de una sola clase base, este tipo de herencia se llama herencia jerárquica . Estas clases derivadas comparten una única clase principal o clase base. Si una clase derivada comparte varias clases principales y hereda sus características de varias clases principales, este tipo de herencia se denomina herencia múltiple .
Above image shows the order in which a class is derived from a base class. Whenever there is need to depict the order of inheritance theoretically, the order and the denotations as shown in the above image will be used.
Considere una clase de vehículos. Ahora necesitamos crear una clase para Bus, Car, truck, etc. Los métodos fuelAmount(), capacity(), applyBrakes() serán los mismos para todos los vehículos. Si creamos estas clases sin el conocimiento de la herencia, entonces podríamos hacerlo de la manera que se muestra en el diagrama: La
imagen de arriba muestra la creación de estas clases sin el concepto de herencia.
Se puede ver claramente que el proceso anterior da como resultado la duplicación del mismo código 3 veces. Esto aumenta las posibilidades de error y redundancia de datos. Para evitar este tipo de situaciones, se utiliza la herencia. Si creamos una clase Vehicle y escribimos estas tres funciones en ella y heredamos el resto de las clases de la clase de vehículo, entonces simplemente podemos evitar la duplicación de datos y aumentar la reutilización. Mire el siguiente diagrama en el que las tres clases se heredan de la clase de vehículo:
Using inheritance, we have to write the functions only one time instead of three times as we have inherited the rest of the three classes from the base class(Vehicle).
Herencia multinivel
La herencia en Perl puede ser de muchos tipos, pero la herencia multinivel es aquella en la que hay una string de la clase base y las clases derivadas. En la herencia multinivel, una clase derivada heredará una clase base y, además, la clase derivada también actuará como clase base para otra clase. En la siguiente imagen, 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.
Implementando Herencia en Perl:
La herencia en Perl se puede implementar con el uso de paquetes . Los paquetes se usan para crear una clase principal que se puede usar en las clases derivadas para heredar las funcionalidades.
use strict; use warnings; # Creating parent class package Employee; # Creating constructor sub new { # shift will take package name 'employee' # and assign it to variable 'class' my $class = shift; my $self = { 'name' => shift, 'employee_id' => shift }; # Bless function to bind object to class bless $self, $class; # returning object from constructor return $self; } 1;
El código anterior es la definición de la clase base. Aquí, la clase base es empleado y los miembros de datos son la identificación del empleado y el nombre del empleado. Este código para la clase principal debe guardarse como *.pm, aquí lo guardaremos como employee.pm . Ahora veremos cómo derivar una clase del empleado de clase base ya declarado.
# Creating parent class package Department; use strict; use warnings; # Using class employee as parent use parent 'employee'; 1;
Como se ve en el ejemplo anterior, el Departamento de clase usa los rasgos del empleado de clase ya declarado. Entonces, al declarar el Departamento de clase, no declaramos todos los miembros de datos nuevamente, sino que los heredamos del empleado de la clase base. Para ejecutar este código, guarde el código de clase intermediaria como *.pm, aquí se guarda como Departamento.pm . Esta clase es la clase intermediaria y funcionará como clase principal para el siguiente archivo derivado data.pl.
use strict; use warnings; # Using Department class as parent use Department; # Creating object and assigning values my $a = Department->new("Shikhar",18017); # Printing the required fields print "$a->{'name'}\n"; print "$a->{'employee_id'}\n";
Producción:
Por lo tanto, la herencia juega un papel muy importante cuando se trabaja en un gran proyecto y el programador quiere acortar el código.
Publicación traducida automáticamente
Artículo escrito por ShikharMathur1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA