Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Herencia en Java
Herencia en Java
Que es la herencia?
La herencia es una caracterstica de algunos lenguajes de programacin orientados a objetos, que permite crear objetos a base de otros ya existentes. Como ya hemos comentado en clases, la Orientacin a objetos permite la reutilizacin de cdigo. Llamaremos superclase, a la clase de la cual heredamos, y en el caso de Java, solo podremos heredar de una sola clase. La clase de la cual heredamos, nos aporta todas las funciones y mtodos que esta posee, dejando as ms fcil su implementacin.
Herencia en Java
Herencia simple Object es la clase raz (paquete java.lang) Object describe las propiedades comunes a todos los objetos
Object
A B
Tipos de herencia
Herencia simple Una clase puede heredar de una nica clase. Ejemplo: Java, C# Herencia mltiple Una clase puede heredar de varias clases. Clases forman un grafo dirigido acclico. Ejemplos: Eiffel, C++
Herencia en Java
Java permite definir una clase como subclase de una clase padre.
class clase_hija extends clase_padre { .......... }
Clase Padre
Clase Hija
Herencia en Java
Una subclase hereda de su superclase mtodos y variables tanto de clase como de instancia. Una subclase puede aadir nuevos mtodos y variables. Una subclase puede redefinir mtodos heredados. Sintaxis: class nombreHija extends nombrePadre {} Por defecto toda clase extiende la clase Object
JERARQUIA DE CLASES
GENERALIZACI ON Se detectan clases con un comportamiento comn. Ejemplo: Triangulo y polgono son figuras.
No hay receta mgica para crear buenas jerarquas
ESPECIALIZACI ON Se detecta que una clase es un caso especial de otra Ejemplo: Triangulo es un tipo de Polgono.
Clase persona
Clase trabajador
Acceso protegido
Una subclase no puede acceder a los campos privados de la superclase Para permitir que un mtodo de la subclase pueda acceder a un campo de la superclase, ste tiene que declararse como protected
Resumen de modificadores de acceso: private public protected visible slo en la clase visible a todas las clases visible en el paquete y las subclases
Evitando la herencia
Se puede evitar que una clase sea heredada:
Paquetes
Los paquetes son contenedores de clases que permite delimitar el espacio en el cual una clase existe. Los paquetes permiten que exista ms de una clase con el mismo nombre. Para indicar que una clase pertenece a un cierto paquete, se utiliza la palabra clave package La forma de esta sentencia es:
package nombrePaquete;
Conversin de tipos
Java es un lenguaje fuertemente tipado, es decir, en tiempo de compilacin se comprueba la compatibilidad de tipos
Conversin implcita: (automtica) tipos primitivos a uno que soporte un rango mayor de valores float saldo = 300; //podemos asignarle un entero int codigo = 3.7; //ERROR
conversin de referencias: todo objeto es compatible con sus superclases cast-up siempre vlido
Rectangulo
Cuadrado
Conversin de tipos
Conversin explcita: tipos primitivos perdiendo informacin
conversin de referencias asignar a un objeto de una subclase uno de la superclase cast-down o narrowing No siempre vlido El error se puede producir: en tiempo de ejecucin (ClassCastException) en tiempo de compilacin si no es ni siquiera una subclase.
Jerarquas de herencia
Constructores y Herencia
Cuando se declara un obj de una clase derivada, se ejecutan los conts siguiendo el orden de derivacin, es decir, primero el de la clase base, y despus los conts de las clases derivadas de arriba a abajo. Para pasar parmetros al constructor de la clase padre:
super (para1, para2, ..., paraN)
Ejemplo de super
class Persona { private String nombre; private int edad; public Persona() {} public Persona (String n, int e) { nombre = n; edad = e; } } class Alumno extends Persona { private int curso; private String nivelAcademico; public Alumno (String n, int e, int c, String nivel) { super(n, e); curso = c; nivel_academico = nivel; } public static void main(String[] args) { Alumno a = new Alumno("Pepe", 1, 2, "bueno"); } }