La herencia se define como el mecanismo de heredar las propiedades de la clase base a la clase secundaria. Aquí vamos a ver los tipos de herencia en Python.
Tipos de herencia en Python
Los tipos de herencia dependen del número de clases de padres e hijos involucradas. Hay cuatro tipos de herencia en Python:
Herencia Única:
La herencia única permite que una clase derivada herede propiedades de una sola clase principal, lo que permite la reutilización del código y la adición de nuevas características al código existente.
Ejemplo:
Python3
# Python program to demonstrate # single inheritance # Base class class Parent: def func1(self): print("This function is in parent class.") # Derived class class Child(Parent): def func2(self): print("This function is in child class.") # Driver's code object = Child() object.func1() object.func2()
Producción:
This function is in parent class. This function is in child class.
Herencia múltiple:
Cuando una clase se puede derivar de más de una clase base, este tipo de herencia se denomina herencia múltiple. En herencias múltiples, todas las características de las clases base se heredan en la clase derivada.
Ejemplo:
Python3
# Python program to demonstrate # multiple inheritance # Base class1 class Mother: mothername = "" def mother(self): print(self.mothername) # Base class2 class Father: fathername = "" def father(self): print(self.fathername) # Derived class class Son(Mother, Father): def parents(self): print("Father :", self.fathername) print("Mother :", self.mothername) # Driver's code s1 = Son() s1.fathername = "RAM" s1.mothername = "SITA" s1.parents()
Producción:
Father : RAM Mother : SITA
Herencia multinivel :
En la herencia multinivel, las características de la clase base y la clase derivada se heredan en la nueva clase derivada. Esto es similar a una relación que representa a un niño y un abuelo.
Ejemplo:
Python3
# Python program to demonstrate # multilevel inheritance # Base class class Grandfather: def __init__(self, grandfathername): self.grandfathername = grandfathername # Intermediate class class Father(Grandfather): def __init__(self, fathername, grandfathername): self.fathername = fathername # invoking constructor of Grandfather class Grandfather.__init__(self, grandfathername) # Derived class class Son(Father): def __init__(self, sonname, fathername, grandfathername): self.sonname = sonname # invoking constructor of Father class Father.__init__(self, fathername, grandfathername) def print_name(self): print('Grandfather name :', self.grandfathername) print("Father name :", self.fathername) print("Son name :", self.sonname) # Driver code s1 = Son('Prince', 'Rampal', 'Lal mani') print(s1.grandfathername) s1.print_name()
Producción:
Lal mani Grandfather name : Lal mani Father name : Rampal Son name : Prince
Herencia jerárquica:
Cuando se crean más de una clase derivada a partir de una única base, este tipo de herencia se denomina herencia jerárquica. En este programa, tenemos una clase principal (base) y dos clases secundarias (derivadas).
Ejemplo:
Python3
# Python program to demonstrate # Hierarchical inheritance # Base class class Parent: def func1(self): print("This function is in parent class.") # Derived class1 class Child1(Parent): def func2(self): print("This function is in child 1.") # Derivied class2 class Child2(Parent): def func3(self): print("This function is in child 2.") # Driver's code object1 = Child1() object2 = Child2() object1.func1() object1.func2() object2.func1() object2.func3()
Producción:
This function is in parent class. This function is in child 1. This function is in parent class. This function is in child 2.
Herencia híbrida:
La herencia que consta de múltiples tipos de herencia se denomina herencia híbrida.
Ejemplo:
Python3
# Python program to demonstrate # hybrid inheritance class School: def func1(self): print("This function is in school.") class Student1(School): def func2(self): print("This function is in student 1. ") class Student2(School): def func3(self): print("This function is in student 2.") class Student3(Student1, School): def func4(self): print("This function is in student 3.") # Driver's code object = Student3() object.func1() object.func2()
Producción:
This function is in school. This function is in student 1.