Está en la página 1de 9

Datos del estudiante Fecha

Apellidos: Tandayamo Smith

Nombre: Smith Francisco 29/07/2020

Materia: Programación Avanzada

Herencia

Cuando hablamos de herencia en programación no nos referimos precisamente a

que algún familiar lejano nos ha podido dejar una fortuna, ya nos gustaría. En realidad,

se trata de uno de los pilares fundamentales de la programación orientada a objetos. Es

el mecanismo por el cual una clase permite heredar las características (atributos y

métodos) de otra clase(Joyanes Luis, 2008).

La herencia permite que se puedan definir nuevas clases basadas de unas ya existentes

a fin de reutilizar el código, generando así una jerarquía de clases dentro de una

aplicación. Si una clase deriva de otra, esta hereda sus atributos y métodos y puede añadir

nuevos atributos, métodos o redefinir los heredados (Martinez, 2012).

Estoy seguro de que cuando has leído “reutilizar” se te ha hecho la boca agua ¿verdad?

No hay nada mejor en programación que poder usar el mismo código una y otra vez

para hacer nuestro desarrollo más rápido y eficiente. El concepto de herencia ofrece

mucho juego. Gracias a esto, lograremos un código mucho más limpio, estructurado y

con menos líneas de código, lo que lo hace más legible (Llinás, 2010).

En Java debemos tener claro cómo llamar a la clase principal de la que heredamos y

aquella que hereda de ella, así, clase que se hereda se denomina superclase. La clase que

hereda se llama subclase. Por lo tanto, una subclase es una versión especializada de una

superclase. Hereda todas las variables y métodos definidos por la superclase y agrega sus

propios elementos únicos(Moreno Pérez, 2015).


Datos del estudiante Fecha

Apellidos: Tandayamo Smith

Nombre: Smith Francisco 29/07/2020

Materia: Programación Avanzada

Tipos de herencia en Java

Java, como la mayoría de los lenguajes de programación modernos, dispone de

diferentes tipos de herencia que podemos usar para hacer todavía más eficiente nuestro

programa al añadir características o atributos procedentes de diferentes clases. Lo que sí

debemos tener en cuenta es que solo puede existir una superclase, como veremos en los

siguientes tipos de herencia(Sánchez Allende et al., 2005):

Herencia única: donde las subclases heredan las características de solo una

superclase.

Herencia Multinivel: una clase derivada heredará una clase base y, además, la clase

derivada también actuará como la clase base de otra clase.

Herencia Jerárquica: una clase sirve como una superclase (clase base) para más de

una subclase.

Herencia Múltiple (a través de interfaces): una clase puede tener más de una

superclase y heredar características de todas las clases principales. Pero Java no admite

herencia múltiple con clases, así que para lograrlo tenemos que usar Interfaces(Joyanes

Luis, 2011).

Herencia Híbrida (a través de Interfaces): Es una mezcla de dos o más tipos de

herencia anteriores. Como Java no admite herencia múltiple con clases, la herencia

híbrida tampoco es posible con clases, pero como en el ejemplo anterior, podemos lograr

el mismo resultado a través de Interfaces(Joyanes Luis, 2011).


Datos del estudiante Fecha

Apellidos: Tandayamo Smith

Nombre: Smith Francisco 29/07/2020

Materia: Programación Avanzada

Declara una jerarquía de herencia

En Java, cada clase solo puede derivarse de otra clase. Esa clase se llama superclase,

o clase padre. La clase derivada se llama subclase o clase secundaria.

Utiliza la palabra clave extends para identificar la clase que extiende su subclase. Si

no declara una superclase, su clase amplía implícitamente la clase Object. El objeto es la

raíz de todas las jerarquías de herencia; Es la única clase en Java que no se extiende de

otra clase.

Herencia y modificadores de acceso

Los modificadores de acceso definen qué clases pueden acceder a un atributo o

método. esto podría servir por ejemplo para ser usados para proteger la información o

mejor dicho definir cómo nuestro programa accede a ella. Es decir, los modificadores de

acceso afectan a las entidades y los atributos a los que puede acceder dentro de una

jerarquía de herencia(Martinez, 2012).

Se puede acceder a los atributos y métodos sin un modificador de acceso dentro de la

misma clase, y por todas las demás clases dentro del mismo paquete. Se puede acceder a

los atributos o métodos protegidos (protected) dentro de la misma clase, por todas las

clases dentro del mismo paquete y por todas las subclases(Martinez, 2012).

Todas las clases pueden acceder a los atributos y métodos públicos.


Datos del estudiante Fecha

Apellidos: Tandayamo Smith

Nombre: Smith Francisco 29/07/2020

Materia: Programación Avanzada

La siguiente tabla muestra el acceso a los miembros permitido por cada modificador:

Tabla 1. Muestra el acceso a los miembros acceder a un atributo o método (Martinez, 2012).

Terminología importante:

Superclase: la clase cuyas características se heredan se conoce como superclase (o

una clase base o una clase principal) (Llinás, 2010).

Subclase: la clase que hereda la otra clase se conoce como subclase (o una clase

derivada, clase extendida o clase hija). La subclase puede agregar sus propios campos y

métodos, además de los campos y métodos de la superclase (Llinás, 2010).

Reutilización: la herencia respalda el concepto de “reutilización”, es decir, cuando

queremos crear una clase nueva y ya hay una clase que incluye parte del código que

queremos, podemos derivar nuestra nueva clase de la clase existente. Al hacer esto,

estamos reutilizando los campos/atributos y métodos de la clase existente (Llinás, 2010).


Datos del estudiante Fecha

Apellidos: Tandayamo Smith

Nombre: Smith Francisco 29/07/2020

Materia: Programación Avanzada

POLIMORFISMO

Definición: El polimorfismo es una relajación del sistema de tipos, de tal manera que

una referencia a una clase (atributo, parámetro o declaración local o elemento de un

vector) acepta direcciones de objetos de dicha clase y de sus clases derivadas (hijas,

nietas, entre otros) (Martinez, 2012).

El concepto de polimorfismo es en realidad algo muy básico. Realmente, cuando

estamos aprendiendo Programación Orientada a Objetos (también conocida por sus siglas

POO / OOP) muchos estudiantes nos hacemos un embolado tremendo al tratar de entender

el concepto, pero en su base es algo extremadamente sencillo (Llinás, 2010).

Trataremos de explicarlo en este artículo con palabras sencillas, pero para los valientes,

aquí va una primera definición que no es mía y que carece de la prometida sencillez. Pero

no te preocupes, pues la entiendas o no, luego lo explicaré todo de manera más

llana(Sánchez Allende et al., 2005).

Método de Polimorfismo Java

En programación orientada a objetos, polimorfismo es la capacidad que tienen los

objetos de una clase en ofrecer respuesta distinta e independiente en función de los

parámetros (diferentes implementaciones) utilizados durante su invocación. Dicho de otro

modo, el objeto como entidad puede contener valores de diferentes tipos durante la

ejecución del programa (Sánchez Allende et al., 2005).

En JAVA el término polimorfismo también suele definirse como ‘Sobrecarga de

parámetros’, que así de pronto no suena tan divertido, pero como veremos más adelante
Datos del estudiante Fecha

Apellidos: Tandayamo Smith

Nombre: Smith Francisco 29/07/2020

Materia: Programación Avanzada

induce a cierta confusión. En realidad, suele confundirse con el tipo de poliformismo más

común, pero no es del todo exacto usar esta denominación (Martinez, 2012).

Ejemplo de Polimorfismo

Un ejemplo clásico de polimorfismo es el siguiente. Podemos crear dos clases

distintas: Gato y Perro, que heredan de la superclase Animal. La clase Animal tiene el

método abstracto makesound() que se implementa de forma distinta en cada una de las

subclases (gatos y perros suenan de forma distinta). Entonces, un tercer objeto puede

enviar el mensaje de hacer sonido a un grupo de objetos Gato y Perro por medio de una

variable de referencia de clase Animal, haciendo así un uso polimórfico de dichos objetos

respecto del mensaje mover (Llinás, 2010).

Tipos de polimorfismo:

Sobrecarga: El más conocido y se aplica cuando existen funciones con el mismo

nombre en clases que son completamente independientes una de la otra (Joyanes Luis,

2008).

Paramétrico: Existen funciones con el mismo nombre pero se usan diferentes

parámetros (nombre o tipo). Se selecciona el método dependiendo del tipo de datos que

se envíe (Joyanes Luis, 2008).

Inclusión: Es cuando se puede llamar a un método sin tener que conocer su tipo, así

no se toma en cuenta los detalles de las clases especializadas, utilizando una interfaz

común (Llinás, 2010) .


Datos del estudiante Fecha

Apellidos: Tandayamo Smith

Nombre: Smith Francisco 29/07/2020

Materia: Programación Avanzada

En líneas generales en lo que se refiere a la POO, la idea fundamental es proveer una

funcionalidad predeterminada o común en la clase base y de las clases derivadas se espera

que provean una funcionalidad más específica (Llinás, 2010).

Polimorfismo paramétrico

Antes habíamos visto un ejemplo clásico de polimorfismo basado en sobrecarga. Pero

veamos ahora un ejemplo Paramétrico. Es importante entender que la conversión

automática sólo se aplica si no hay ninguna coincidencia directa entre un parámetro y

argumento (Martinez, 2012).

Aquí el método demo() se sobrecarga 3 veces: el primer método tiene 1 parámetro int,

el segundo método tiene 2 parámetros int y el tercero tiene un parámetro doble. Por lo

que para lidiar con esta variedad el método que se llamará está determinado por los

argumentos que pasamos al llamar a los métodos. (Joyanes Luis, 2008).

Polimorfismo de inclusión

La habilidad para redefinir por completo el método de una superclase en una subclase

es lo que se conoce como polimorfismo de inclusión (o redefinición).En él, una subclase

define un método que existe en una superclase con una lista de argumentos (si se define

otra lista de argumentos, estaríamos haciendo sobrecarga y no redefinición) (Joyanes

Luis, 2008).
Datos del estudiante Fecha

Apellidos: Tandayamo Smith

Nombre: Smith Francisco 29/07/2020

Materia: Programación Avanzada

Bibliografía:

Joyanes Luis, Z. I. (2008). Estructura de datos en Java (1.a ed.). McGRAW-

HILL/INTERAMERICANA EDITORES, S.A. DE C.V.

file:///C:/Users/dell/Downloads/Estructura%20de%20datos%20en%20java%20J

oyanes%201ed.pdf

Joyanes Luis, Z. I. (2011). Programacion en Java (6.a ed.). McGRAW-

HILL/INTERAMERICANA EDITORES, S.A. DE C.V.

file:///C:/Users/dell/Downloads/Programacion-en-java-6-Luis-Joyanes-

Aguilar.pdf

Llinás, L. F. G. (2010). Programación orienta a objetos en Java. Universidad del Norte.

Martinez, J. (2012). Fundamentos de programación en Java (1.a ed., Vol. 1). Univerdad

Complutense de Madrid.

https://www.academia.edu/28946526/Fundamentos_de_Programacion_en_Java_

Jose_Martinez_Ladron_de_Guevara

Moreno Pérez, J. (2015). Programación orientada a objetos. RA-MA Editorial.

http://ebookcentral.proquest.com/lib/utnortesp/detail.action?docID=5759019

Sánchez Allende, J., Huecas Fernández-Toribio, G., & Moreno Díaz, P. (2005).

Programación en Java 2. McGraw-Hill España.

http://ebookcentral.proquest.com/lib/utnortesp/detail.action?docID=3195078
Datos del estudiante Fecha

Apellidos: Tandayamo Smith

Nombre: Smith Francisco 29/07/2020

Materia: Programación Avanzada

También podría gustarte