Show Menu
Cheatography

Herencia en Java Cheat Sheet by

Resumen y sintaxis de herencia en Java

Concept

La herencia es una relación entre clases
Permite definir una clase a partir de otra
Es una relación asimét­rica, las dos clases involu­cradas tienen roles diferentes
Una de las clases se denomina Base y la otra Derivada
También se las conoce como Padre e Hija respec­tiv­amente
La clase derivada se la define como una variante o caso particular de la clase Base

Aplicación

La herencia se utiliza cuando dos clases son sufici­ent­emente similares como para progra­marse como una clase, pero algunos de los objetos tienen caract­erí­sticas que los difere­ncian o que repres­entan casos partic­ulares.
La relación de herencia siempre debe poder interp­retarse con la expresión "es un"
Entre las clases Empleado y Gerente puede plantearse una relación de herencia, ya que un Gerente siempre es un Empleado.
Entre Empresa y Empleado no tiene sentido la herencia, un Empleado no es una Empresa. (Aunque puede haber otro tipo de reación entre esas clases, p.ej. Compos­ición)

Herencia simple

Java posee herencia simple, es decir que cada clase puede tener una única clase base
Sin embargo, cada clase puede tener múltiples clases derivadas
Las clases derivadas pueden tener a su vez otras que deriven de ellas
A causa de esto, el conjunto de relaciones de herencia de una clase se lo denomina Árbol de herencia

Diagrama de clases

Miembros de la clase derivada

Los objetos de la clase derivada poseen todos los miembros definidos en la clase base
A su vez la clase derivada puede poseer otros miembros (atributos y métodos)
A causa de esto es que la cláusula que establece la herencia se denomina
extends
(extie­nde), ya la clase derivda "es más grande­" que la clase base
En el código de la clase derivada se puede acceder a los miembros visibles de la clase base como si fueran miembros propios direct­amente o a través de la referencia
this
 

Modifi­cador de acceso protected

Además de los modifi­cadores de acceso
public
y
private
se le agrega el modifi­cador
protected
Un miembro marcado como protected se lo denomina protegido
Los miembros protegidos son accesibles desde las clases derivadas pero no desde otras
Por estar ocultos desde otras clases no relaci­onadas por medio de la herencia, se requiere programar los métodos get y set.

Sintaxis: cláusula extends

Para establecer la herencia en el código debe agregarse al bloque class de la derivada la cláusula extends y a contin­uación el nombre de la clase base
public class Base {...}

public class Derivada extends Base{...}
Todas las clases que no posean cláusula extends no establecen ninguna clase base, en este caso derivan implíc­ita­mente de una clase especial llamada Object

Referencia super

La referencia
super
es similar a
this
, pero sólo puede acceder a los miembros heredados
Sólo debe usarse cuando hay que difere­nciar entre un método programado en la clase base que puede generar conflicto con los de la clase derivada
Tiene dos usos princi­pales:
- Para llamar a los constr­uctores de la clase base.
- Para llamar a la versión existente en la clase base de un método sobree­scrito en la derivada.

Constr­uctores

Los constr­uctures no se heredan
Las clases derivadas deben proveer sus propios constr­uctores
Cuando se instancia un objeto de una clase derivada, se usa
new
con el nombre de la derivada y los parámetros de algún constr­uctor de la misma
Primero se ejecuta el constr­uctor de la clase base y luego el de la derivada
Si el constr­uctor de la clase derivada no llama a ningún constr­uctor de la clase base, se ejecuta el constr­uctor sin parámetros
Para invocar al constr­uctor de la clase base en forma explícita se agrega como primera línea del constr­uctor de la clase derivada una llamada a
super();
Para usar un constr­uctor de la clase base con parámetros se indica dentro de la lista de parámetros de super()
El constr­uctor de la derivada requiere parámetros tanto para los atributos propios como para los de la clase base
public class Derivada extends Base{ 
   public Deriva­da(­param1, param2, param3){
      super(param1,param2);
      this.atributo3 = param3;
   }
}
   
 

Comments

No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          Related Cheat Sheets

          Selenium WebDriver Cheat Sheet Cheat Sheet
          Cypressio Cheat Sheet
          ISTQB Test Automation Engineering Cheat Sheet

          More Cheat Sheets by diegojserrano

          Arreglos en Java Cheat Sheet