Sunteți pe pagina 1din 8

Universidad Tecnológica del Perú Aleksandr Paúl Quito Pérez

Lenguaje de Programación I Herencias

PROGRAMACIÓN ORIENTADA A OBJETOS:


HERENCIAS
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.

Existen dos tipos de herencia sencilla y múltiple. Sencilla significa que sólo
heredamos de una clase base, mientras que múltiple indica que tenemos varias clases
base (por ejemplo un hidroavión
hereda de barco y de avión). Java
sólo soporta herencia simple.

Al utilizar la herencia aparecen dos


conceptos: super y this, this
representa al objeto completo, en
cambio super, sólo representa la
parte heredada de la clase base.

Cuando se hereda nos encontramos frente a un pequeño problema: ¿Qué sucede cuando
se hereda un método de la clase base, el cuál estamos redefiniendo en la clase derivada?
Esto es un caso de sobrescritura de métodos. La solución es simple, cuando estemos
ejecutando el método de un objeto derivado se llamará al método de su propia clase, es
decir el redefinido. Si lo que se quiere es emplear el método de la clase base, hay que
emplear una técnica que consiste en usar: super.método().

Los constructores no son heredados, pero sí llamados. Es decir, cuando se construye un


objeto de la clase derivada se llama al constructor de la clase derivada, pero antes de
comenzar a ejecutarse se llama al constructor de la clase base, que tras ejecutarse
continua la ejecución del constructor de la clase derivada.

Se puede elegir qué constructor de la clase base es llamado, generalmente llamando al


método super(), que representa al constructor de la clase base, pero al pasar parámetros
distintos, seleccionamos qué constructor de la clase base queremos llamar.

Supongamos ahora que tenemos algo que es capaz de encenderse, de apagarse, de


iniciar una reproducción, de parar una reproducción, sin duda todos pensamos en un
reproductor, pero por esa descripción encajan objetos como reproductor de cassete,
reproductor de CD, el vídeo,...

Llamaremos a la descripción interfaz, y los objetos que cumplen ese interfaz (es decir,
tienen todas las funciones que definen el interfaz) diremos que implementan el
interfaz. Pensemos ahora en el hecho que una persona que sabe iniciar una
reproducción de un CD también sabe iniciar una reproducción de vídeo, en ambos casos
debe de encender el objeto, iniciar la reproducción, parar la reproducción y apagar el
reproductor. Eso significa que para la persona es transparente el tipo (clase) real del
objeto reproductor que posea, ya que la persona sabe que puede ponerlo en marcha,
apagarlo, sin necesidad de conocer la clase real, tan sólo debe de saber que es un objeto
del tipo reproductor.

-1-
Universidad Tecnológica del Perú Aleksandr Paúl Quito Pérez
Lenguaje de Programación I Herencias

HERENCIAS – APLICACIÓN PRÁCTICA


El tema de herencia en java se asemeja a la vida real, para esto debe existir una Clase
Padre y una o varias Clases Hijos, en simples palabras podemos decir, que los Hijos
heredaran atributos del Padre.

Por ejemplo:
Creemos la Clase Animal, que cumplirá con la función de ser una clase Padre; los
atributos de la clase son:
Raza String
Nombre String
Edad int

En Java esto seria así:

Como vemos esta clase Animal, contiene atributos que quizás cualquier animal en
particular debe de tener. Ahora crearemos una clase hijo, por ejemplo llamemos a esta
nueva clase Perro.

Esta clase Perro, debe contener los mismos atributos de cualquier animal así como raza,
nombre, edad y quizás otros atributos muy particulares a un perro.
Entonces haremos que los atributos de la clase padre Animal se los herede a la clase hijo
Perro, esto se logra haciendo uso de una palabra reservada por JAVA que es “extends”,
veamos como es la sintaxis de la clase hijo una vez que deseamos que herede los
atributos del padre: en la misma clase perro agregaremos lo siguiente:

Como podemos apreciar la sintaxis general para cualquier caso es la siguiente:

-2-
Universidad Tecnológica del Perú Aleksandr Paúl Quito Pérez
Lenguaje de Programación I Herencias

public class [Nombre de la clase hijo] extends [Nombre de la clase padre]{

• Esto se lee: la Clase hijo extends=heredara de la clase Padre:

Posteriormente veremos esto en la aplicación con un ejemplo, la recomendación para


ello es previamente haber entendido el concepto de clases, métodos y objetos.

EJEMPLO DE APLICACIÓN: En esta ocasión se creara una clase padre de


nombre Persona, el cual contendrá los atributos necesarios que pueda tener una
persona. Tales como son: código, nombre, apellidos, fnacimiento, direccion.
Posteriormente se creara una clase hijo de nombre Alumno, con atributos que puede
heredar de la clase Persona, así como atributos propios de un Alumno en particular.

Paso 1: Creamos la clase Persona con los atributos declarados:

Observación: en la declaración de cada atributo del tipo String estamos utilizando su


método constructor vacío, otra manera de declarar es simplemente poner:
String nombre; - String apellidos;

Paso 2: Crearemos su método constructor por defecto, quedando como sigue:

Paso 3: Creamos su métodos set y get para cada atributo, esto se puede crear
manualmente o sino usando el asistente que nos brinda Java Virtual Machine, donde
se procede de la siguiente manera: No ubicamos en cualquier parte de la hoja de
código, damos clic derecho y buscamos – Refactor  Encapsulate fields, tal como
se muestra en la siguiente figura:
-3-
Universidad Tecnológica del Perú Aleksandr Paúl Quito Pérez
Lenguaje de Programación I Herencias

Luego nos aparecerá el siguiente asistente, donde le daremos check a cada uno, para
que nos genere automáticamente los métodos set y get para cada atributo, sin
necesidad de escribirlos manualmente:

Luego debajo de esto podemos observar que hay opciones:


Fields Visibility : private
Accessors’ Visibility : public
El primero nos quiere decir que si deseamos que nuestras variables sean del tipo
privado o quizás del tipo publico, por razones de seguridad se escoge privado, y cuando
se da este caso estas variables serán vistas únicamente dentro de su misma clase mas no
fuera de ella.

-4-
Universidad Tecnológica del Perú Aleksandr Paúl Quito Pérez
Lenguaje de Programación I Herencias

Lo segundo es sobre los métodos set y get que también se le conoces como métodos
accesores, esto por defecto siempre son de tipo publico. Si modificar nada damos clic en
refactor y vemos que pasa con nuestro código:

se puede apreciar algo nuevo en el código, fíjense los atributos todos se volvieron
privados y los métodos set y get son del tipo publico.

Paso 4: dentro de esta misma clase crearemos un método asignarDatos, este


método debe permitirme ingresar datos, y luego igualarlos o asignarlos a nuestros
atributos creados en la clase Persona. Esto se hace como sigue:

Observación: los atributos declarados como argumentos dentro del método


asignarDatos; estos atributos que van declarados dentro del paréntesis del método, no
confundirlos con los que hemos creado líneas arriba, en el paso 1, estos atributos que se
encuentran dentro del paréntesis pueden tener nombres diferentes, pero deben de
conservar el tipo de dato: es decir:

Nosotros hemos declarado en el paso 1 que el código es del tipo entero


entonces cuando se trate de asignación este debe de conservar su
mismo tipo de dato, lo que puede variar es el nombre de dichos atributos, es por ende
-5-
Universidad Tecnológica del Perú Aleksandr Paúl Quito Pérez
Lenguaje de Programación I Herencias

que dentro del paréntesis se conserva el mismo tipo de


dato que es el entero, y así para cada variable.

- Luego vemos en el código que se nos presenta una palabra nueva que es el this, esta
palabra la usamos cuando tenemos igualdad de nombres en los atributos, así como se
presento líneas arriba:

Cuando se da este caso es recomendable usar el this, para diferenciar correctamente, a


la hora de utilizar esta palabra ponemos un punto y no saldrá opciones tal como se
muestra:

Es de mucha utilidad esta palabra, ya que nos sirve como un buscador de atributos o
métodos, si es que no recordamos el nombre de estos.

Puede haber 3 formas de poder asignar estos atributos usando o sin usar la palabra this,
recordando que esta palabra es una especie de buscador. El cual nos ayudara a
diferenciar nuestros atributos de clase.

FORMA 1: Cuando los atributos de la clase y del método son iguales:

FORMA 2: Utilizando el set. Aquí se puede utilizar el this de forma opcional.

Observemos aquí después de la palabra set sigue el nombre del atributo de la clase pero
en mayúscula, y aquí viene una nueva regla cada atributo o variable debe empezar
siempre con letras minúsculas.

Para evitar estos posibles errores se hace uso del this, después de poner un punto
podemos llamar al setCodigo rápidamente de la siguiente forma:
-6-
Universidad Tecnológica del Perú Aleksandr Paúl Quito Pérez
Lenguaje de Programación I Herencias

this.setCodigo(codigo);
FORMA 3: Cuando los atributos de la clase del método son distintos; en esta ocasión
no es necesario utilizar el this.

Pero nos puede servir como buscador.

El cual quedaría así:


Las dos formas de asignar son validas.

Aquí se puede observar mejor el orden en que se asigna las variables, en primer lugar va
el atributo de la clase y luego el atributo del método, .

PASO 5. Y por ultimo para terminar con esta clase padre, crearemos un método
que contenga todas las impresiones de los atributos, esto se hace tal como sigue:

Por ultimo hay que hacer una observación que se puede utilizar el get o simplemente
el nombre del atributo de la clase, o también ayudado del buscador this.

Y con esto terminamos con la clase persona, los siguientes pasos se trataran de clase
hijos el cual heredaran los atributos de la clase padre Persona.

PASO 6. Crearemos una clase hijo de nombre Alumno, el cual deberá heredar los
atributos del padre.

Anteriormente se explico el uso de la palabra extends. Que se usa para heredar.


No haremos nada más en esta clase hijo Alumno. Quedara así como se muestra.

-7-
Universidad Tecnológica del Perú Aleksandr Paúl Quito Pérez
Lenguaje de Programación I Herencias

PASO 7. Como ultimo paso crearemos una clase Hprueba con método main para
correr nuestra aplicación:
Crearemos un objeto “a1” de la clase Alumno. Mucha atención aquí, que vamos a
llamar a los atributos que Alumno heredo de la clase Persona.

Luego del objeto “a1” llamaremos al método que esta en el padre de la clase persona

Una ves asignados los datos correspondientes y llamando al método listar datos el cual
nos permite imprimir los datos que queremos, nuestro código seria el siguiente:

Compilando tenemos lo siguiente:

Como podemos apreciar la clase hijo Alumno heredo todos los atributos de la clase
padre Persona.

-8-

S-ar putea să vă placă și