Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porGustavo Ortega Agüero Modificado hace 6 años
1
Ingeniero en Computación José Alfredo Cobián Campos
Taller de Introducción a la programación con Java DGAPA Junio 2017 Herencia Ingeniero en Computación José Alfredo Cobián Campos Facultad de Ciencias
2
Definición La herencia es un mecanismo que permite la definición de una clase a partir de la definición de otra ya existente. La herencia permite compartir automáticamente métodos y datos entre clases, subclases y objetos.
3
Usos La herencia está fuertemente ligada a la reutilización del código en la OOP. Esto es, el código de cualquiera de las clases puede ser utilizado sin más que crear una clase derivada de ella, o bien una subclase.
4
Superclase y Subclases
El concepto de herencia conduce a una estructura jerárquica de clases o estructura de árbol, lo cual significa que en la OOP todas las relaciones entre clases deben ajustarse a dicha estructura.
5
Superclase y Subclases
En esta estructura jerárquica, cada clase tiene sólo una clase padre. La clase padre de cualquier clase es conocida como su superclase. La clase hija de una superclase es llamada una subclase.
6
La herencia es una característica de los lenguajes orientados a objetos la cual nos da la posibilidad de reutilizar código, esto es definir una clase a partir de otra clase común. Supongamos que tenemos la necesidad de registrar caracteristicas y funciones de Empleados y Clientes en un programa cualquiera. Nos damos cuenta que tanto empleados como clientes comparten muchas caracteristicas en comun, nombre direccion edad etc, y seria tonto definirlas en ambas clases, por lo que creamos una clase que comparta sus caracteristicas comunes (variables y metodos) y luego a partir de esa clase creamos las demas, las clases que heredan posteriormente pueden incluir sus propias caracteristicas que la diferencian de las demas, ESTO ES HERENCIA.
7
Para que una clase herede de otra en java se utiliza la palabra reservada extends. La clase de la cual vamos a heredar no necesita especificar nada para lograrlo, simplemente en la clase en la cual heredaremos especificamos con la palabra extends y luego el nombre de la clase de la cual heredaremos. En esta clase llamaremos al metodo super, el cual nos permite registrar los valores en la superclase a traves de su constructor. La clase de la cual heredan se le llama superclase y la clase que hereda es conocida como subclase, si B hereda de A y C hereda de B, entonces B y C son sublases de la superclase A. B seria descendiente directo de A y C seria descendiente indirecto de A. En java se trabaja lo que se conoce como herencia simple, la cual nos permite unicamente heredar de una sola clase, a diferencia de la herencia multiple que nos permite heredar de varias clases como en C++. Algunas tecnicas permite simular la herencia multiple en java, aunque en mi opinion no se deberia de implementar.
8
En el manejo de los modificadores de acceso cabe mencionar que:
private: Visible unicamente en la clase que se define Sin Modificador: Visible a todas las clases del paquete protected: visible a las subclases y a las clases del paquete public: Visible a todas las clases. Super se utiliza para llamar a variables y metodos de la clase padre. Veamos un ejemplo simple de lo mas basico que explicamos aqui para comprender lo que es la herencia en java.
9
Clase Persona: public class Persona { String nombre; String direccion; int edad; public Persona(){ nombre = ""; direccion = ""; edad = 0; } public Persona(String n, String d, int e){ nombre = n; direccion = d; edad = e; } }
10
Clase Empleado: public class Empleado extends Persona{ String puesto; public Empleado(String nombre, String direccion, int edad,String puesto){ super(nombre,direccion,edad); this.puesto = puesto; } public String getInformacion(){ return "Nombre:"+nombre+"nDireccion:"+direccion+"nEdad:"+edad+"nPuesto:"+puesto+"n"; } }
11
Clase Cliente: public class Cliente extends Persona{ double credito; public Cliente(String nombre, String direccion, int edad, double credito){ super(nombre,direccion,edad); this.credito = credito; } public String getInformacion(){ return "Nombre:"+nombre+"nDireccion:"+direccion+"nEdad:"+edad+"nCredito:"+credito+"n"; } }
12
Clase Principal: public class Main { public static void main(String args[]){ Empleado e = new Empleado("Jonathan Melgoza","Calle Falsa 123",21,"Administrador"); System.out.println(e.getInformacion()); Cliente c = new Cliente("Jorge Perez","Calle Lejana 321",22,500.0); System.out.println(c.getInformacion()); } }
13
Resultado
14
En conclusion La verdadera potencia de la programación orientada a objetos radica en su capacidad para reflejar la abstracción que el cerebro humano realiza automáticamente durante el proceso de aprendizaje y el proceso de análisis de información. Las personas percibimos la realidad como un conjunto de objetos interrelacionados. Dichas interrelaciones, pueden verse como un conjunto de abstracciones y generalizaciones que se han ido asimilando desde la niñez. Así, los defensores de la programación orientada a objetos afirman que esta técnica se adecua mejor al funcionamiento del cerebro humano, al permitir descomponer un problema de cierta magnitud en un conjunto de problemas menores subordinados del primero.
15
La capacidad de descomponer un problema o concepto en un conjunto de objetos relacionados entre sí, y cuyo comportamiento es fácilmente identificable, puede ser muy útil para el desarrollo de programas informáticos. B. Jerarquía La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona las clases de manera jerárquica; una clase padre o superclase sobre otras clases hijas o subclases. Imagen 4: Ejemplo de otro árbol de herencia
16
Los descendientes de una clase heredan todas las variables y métodos que sus ascendientes hayan especificado como heredables, además de crear los suyos propios. La característica de herencia, nos permite definir nuevas clases derivadas de otra ya existente, que la especializan de alguna manera. Así logramos definir una jerarquía de clases, que se puede mostrar mediante un árbol de herencia. En todo lenguaje orientado a objetos existe una jerarquía, mediante la que las clases se relacionan en términos de herencia. En Java, el punto más alto de la jerarquía es la clase Object de la cual derivan todas las demás clases.
17
C. Herencia múltiple En la orientación a objetos, se consideran dos tipos de herencia, simple y múltiple. En el caso de la primera, una clase sólo puede derivar de una única superclase. Para el segundo tipo, una clase puede descender de varias superclases. En Java sólo se dispone de herencia simple, para una mayor sencillez del lenguaje, si bien se compensa de cierta manera la inexistencia de herencia múltiple con un concepto denominado interface, que estudiaremos más adelante.
18
D. Declaración Para indicar que una clase deriva de otra, heredando sus propiedades (métodos y atributos), se usa el término extends, como en el siguiente ejemplo: public class SubClase extends SuperClase { // Contenido de la clase } Por ejemplo, creamos una clase MiPunto3D, hija de la clase ya mostrada MiPunto: class MiPunto3D extends MiPunto { int z; MiPunto3D( ) { x = 0; // Heredado de MiPunto y = 0; // Heredado de MiPunto z = 0; // Nuevo atributo}}
19
La palabra clave extends se utiliza para decir que deseamos crear una subclase de la clase que es nombrada a continuación, en nuestro caso MiPunto3D es hija de MiPunto. E. Limitaciones en la herencia Todos los campos y métodos de una clase son siempre accesibles para el código de la misma clase. Para controlar el acceso desde otras clases, y para controlar la herencia por las subclase, los miembros (atributos y métodos) de las clases tienen tres modificadores posibles de control de acceso: public: Los miembros declarados public son accesibles en cualquier lugar en que sea accesible la clase, y son heredados por las subclases. private: Los miembros declarados private son accesibles sólo en la propia clase. protected: Los miembros declarados protected son accesibles sólo para sus subclases
20
Por ejemplo: class Padre { // Hereda de Object // Atributos private int numeroFavorito, nacidoHace, dineroDisponible; // Métodos public int getApuesta() { return numeroFavorito; } protected int getEdad() { return nacidoHace; private int getSaldo() { return dineroDisponible;
21
class Hija extends Padre {
// Definición } class Visita { En este ejemplo, un objeto de la clase Hija, hereda los tres atributos (numeroFavorito, nacidoHace y dineroDisponible) y los tres métodos ( getApuesta(), getEdad() y getSaldo() ) de la clase Padre, y podrá invocarlos. Cuando se llame al método getEdad() de un objeto de la clase Hija, se devolverá el valor de la variable de instancia nacidoHace de ese objeto, y no de uno de la clase Padre.
22
Sin embargo, un objeto de la clase Hija, no podrá invocar al método getSaldo() de un objeto de la clase Padre, con lo que se evita que el Hijo conozca el estado de la cuenta corriente de un Padre. La clase Visita, solo podrá acceder al método getApuesta(), para averiguar el número favorito de un Padre, pero de ninguna manera podrá conocer ni su saldo, ni su edad (sería una indiscreción, ¿no?).
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.