Buscar..


Observaciones

Nota: la herencia multinivel está permitida en Java pero no la herencia múltiple. Obtenga más información en http://beginnersbook.com/2013/04/oops-concepts/

Herencia - Definición

La herencia es uno de los conceptos principales en la programación orientada a objetos (OOP) . Usando la herencia, podemos modelar un problema correctamente y podemos reducir el número de líneas que tenemos que escribir. Veamos la herencia usando un ejemplo popular.

Considera que tienes que modelar el reino animal (Reino animal simplificado, por supuesto. Biólogos, perdóname) usando OOP. Hay muchas especies de animales, algunos tienen características únicas, mientras que otros comparten las mismas características.

Hay una de las principales familias de animales. Digamos, Mammals , Reptiles .

Entonces tenemos hijos de esas familias. Para un ejemplo,

  • Cat , Dog y Lion son los mamíferos.
  • Cobra y el Python son reptiles.

Cada animal comparte algunas características básicas como eat , drink , move . Por lo tanto, podemos decir que podemos tener un padre llamado Animal del cual pueden heredar esas características básicas.

Entonces esas familias también comparten algunas características. Por ejemplo, los reptiles usan el rastreo para moverse. Todos los mamíferos son fed milk en las primeras etapas de la vida.

Luego hay algunas características únicas para cada animal.

Considere si vamos a crear estas especies animales por separado. Tenemos que escribir el mismo código una y otra vez en cada especie animal. En lugar de eso, usamos la herencia. Podemos modelar el Reino Animal de la siguiente manera:

  • Podemos tener un objeto primario llamado Animal , que tiene características básicas de todos los animales.
  • Mammal y Reptile (por supuesto, las otras familias de animales también) se opone a los objetos con sus características comunes mientras que hereda las características básicas del objeto principal, Animal .
  • Objetos de especies animales: el Cat y el Dog heredan del objeto Mammal , Cobra y Python heredan del objeto Reptile , y así sucesivamente.

De esta forma podemos reducir el código que escribimos, ya que no necesitamos definir las características básicas de los Animales en cada especie animal, ya que podemos definirlos en el objeto Animal y luego heredarlos. Lo mismo ocurre con las familias de animales.

Ejemplo de herencia - Considera debajo de dos clases

Clase de profesor

class Teacher {
       private String name;
       private double salary;
       private String subject;
       public Teacher (String tname)  {
           name = tname;
       }
       public String getName()  {
           return name;
       }
       private double getSalary()  {
           return salary;
       }
       private String  getSubject()  {
            return  subject;
       }
    }

Clase OfficeStaff:

class  OfficeStaff{
   private String name;
   private double salary;
   private String dept;
   public OfficeStaff (String sname)  {
      name = sname;
   }
   public String getName()  {
       return name;
   }
   private double  getSalary()  {
       return salary;
   }
   private String  getDept ()  {
       return dept;
   }
}
  1. Ambas clases comparten algunas propiedades y métodos comunes. Así se repite el código.
  2. Creando una clase que contiene los métodos y propiedades comunes.
  3. Las clases Teacher y OfficeStaff pueden heredar todas las propiedades y métodos comunes de la clase Employee a continuación.

Clase de empleado:

class Employee{
   private String name;
   private double salary;
   public Employee(String ename){
      name=ename;
   }
   public String getName(){
      return name;
   }
   private double getSalary(){
      return salary;
   } 
}
  1. Agregue métodos y propiedades individuales. Una vez que hayamos creado una súper clase que define los atributos comunes a un conjunto de objetos, puede usarse para crear cualquier número de subclases más específicas.
  2. Cualquier clase similar como Ingeniero, Principal se puede generar como subclases de la clase Empleado.
  3. La clase padre se denomina súper clase y la clase heredada es la subclase
  4. Una subclase es la versión especializada de una súper clase: hereda todas las variables de instancia y los métodos definidos por la superclase y agrega sus propios elementos únicos.
  5. Aunque una subclase incluye a todos los miembros de su súper clase, no puede acceder a aquellos miembros de la súper clase que han sido declarados como privados.
  6. Una variable de referencia de una súper clase puede asignarse a una referencia a cualquier subclase derivada de esa súper clase, es decir, Empleado emp = nuevo Profesor ();


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow