Cheatography
https://cheatography.com
Resumen y sintaxis de herencia en Java
ConceptLa herencia es una relación entre clases | Permite definir una clase a partir de otra | Es una relación asimétrica, las dos clases involucradas tienen roles diferentes | Una de las clases se denomina Base y la otra Derivada | También se las conoce como Padre e Hija respectivamente | La clase derivada se la define como una variante o caso particular de la clase Base |
AplicaciónLa herencia se utiliza cuando dos clases son suficientemente similares como para programarse como una clase, pero algunos de los objetos tienen características que los diferencian o que representan casos particulares. | La relación de herencia siempre debe poder interpretarse 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. Composición) |
Herencia simpleJava 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 |
Miembros de la clase derivadaLos 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 (extiende), 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 directamente o a través de la referencia this |
| | Modificador de acceso protectedAdemás de los modificadores de acceso public y private se le agrega el modificador 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 relacionadas por medio de la herencia, se requiere programar los métodos get y set. |
Sintaxis: cláusula extendsPara establecer la herencia en el código debe agregarse al bloque class de la derivada la cláusula extends y a continuació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ícitamente de una clase especial llamada Object |
Referencia superLa referencia super es similar a this , pero sólo puede acceder a los miembros heredados | Sólo debe usarse cuando hay que diferenciar entre un método programado en la clase base que puede generar conflicto con los de la clase derivada | Tiene dos usos principales: | - Para llamar a los constructores de la clase base. | - Para llamar a la versión existente en la clase base de un método sobreescrito en la derivada. |
ConstructoresLos constructures no se heredan | Las clases derivadas deben proveer sus propios constructores | 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 constructor de la misma | Primero se ejecuta el constructor de la clase base y luego el de la derivada | Si el constructor de la clase derivada no llama a ningún constructor de la clase base, se ejecuta el constructor sin parámetros | Para invocar al constructor de la clase base en forma explícita se agrega como primera línea del constructor de la clase derivada una llamada a super(); | Para usar un constructor de la clase base con parámetros se indica dentro de la lista de parámetros de super() | El constructor de la derivada requiere parámetros tanto para los atributos propios como para los de la clase base | public class Derivada extends Base{ public Derivada(param1, param2, param3){ super(param1,param2); this.atributo3 = param3; } }
|
|
Created By
Metadata
Comments
No comments yet. Add yours below!
Add a Comment
Related Cheat Sheets
More Cheat Sheets by diegojserrano