Herencia
Java permite el empleo de la herencia, característica muy potente que permite definir una clase tomando como base a otra clase ya existente. Esto es una de las bases de la reutilización de código, en lugar de copiar y pegar.
En java, como ya vimos la herencia se especifica agregando la claúsula extends después del nombre de la clase. En la claúsula extends indicaremos el nombre de la clase base de la cuál queremos heredar.
Al heredar de una clase base heredaremos tanto los atributos como los métodos, mientras que los constructores son utilizados, pero no heredados.
Práctica:
public class Taxista extends Persona { private int nLicencia; public void setNLicencia(int num) { nLicencia = num; } public int getLicencia() { return nLicencia; } }
public class ArranqueTaxista { public static void main (String arg[]){ Taxista tax1 = new Taxista(); tax1.setNombre("Luis"); tax1.setEdad(50); System.out.println( tax1.getNombre()); System.out.println(tax1.getEdad()); } }
public class ArranqueTaxista2 { public static void main (String arg[]){ Taxista tax1 = new Taxista("Jose"); tax1.setEdad(50); System.out.println( tax1.getNombre()); System.out.println(tax1.getEdad()); System.out.println(tax1.getNLicencia()); } }
public Taxista(int licencia) { super(); nLicencia = licencia; } public Taxista(String nombre,int licencia) { super(nombre); nLicencia = licencia; }
|
En java se pueden emplear dos palabras clave: this y super.
Como vimos en la introducción a la programación orientada a objetos this hace alusión a todo el objeto y super hace alusión a la parte heredada, por ello empleamos super para referenciar al constructor de la clase base.
Práctica:
public String getNombre() { return "Soy un taxista y me llamo: " + super.getNombre(); }
|
En java los atributos y métodos de la clase base pueden cambiar su modificador de visibilidad dentro de la clase derivada, la siguiente tabla recoge dichos cambios:
Modificadores en la clase base | ||||
public | private | protected | paquete | |
En la clase derivada se transforman en | public | inaccesible | protected | paquete |
Inaccesible significa que a pesar de haber sido heredado, no hay permisos en la clase derivada para poder acceder a dicho elemento inaccesible, pero aún así se pueden llamar a métodos de la clase base que si pueden acceder y modificar al elemento.
Recordemos que protected significa que es private, pero que al heredar no se hace inaccesible, es decir que desde la clase derivada se puede acceder.
Comentarios
Publicar un comentario