SlideShare una empresa de Scribd logo
1 de 22
Polimorfismo
y Herencia
en Java
Principios de la POO
Realizado por:
José Daniel Pluas
Ci 14.331.732
Herencia
"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."
Herencia
El siguiente ejemplo es un caso en el que vamos
a simular el comportamiento que tendrían los
diferentes integrantes de la selección española de
futbol; definiendo tres clases que van a
representar objetos Futbolista, Entrenador y
Masajista. De cada unos de ellos vamos a
necesitar algunos datos que reflejaremos en
los atributos y una serie de acciones que
reflejaremos en sus métodos. Estos atributos y
métodos los mostramos en el siguiente diagrama
de clases:
Herencia
En las tres clases tenemos atributos y métodos que son iguales ya que los
tres tienen los atributosid, Nombre, Apellidos y Edad; y los tres tienen los
métodos de Viajar y Concentrarse
Herencia
A nivel de código tenemos lo siguiente tras ver el diagrama de clases
Herencia
En este punto es que estamos escribiendo mucho código repetido ya
que las tres clases tienen métodos y atributos comunes, de ahí y
como veremos enseguida, decimos que la herencia consiste en
"sacar factor común" para no escribir código de más, por tanto lo
que haremos sera crearnos una clase con el "código que es común a
las tres clases" (a esta clase se le denomina en la herencia
como"Clase Padre o SuperClase") y el código que es especifico de
cada clase, lo dejaremos en ella, siendo denominadas estas clases
como"Clases Hijas", las cuales heredan de la clase padre todos los
atributos y métodos públicos o protegidos. Es muy importante decir
que las clases hijas no van a heredar nunca los atributos y métodos
privados de la clase padre
Herencia
Herencia
A nivel de código tenemos los siguientes cambios
Herencia
Como se puede observar queda un código más limpio, estructurado y
con menos líneas de código, lo que lo hace más legible, y es un código
reutilizable, lo que significa que ahora si queremos añadir más clases a
nuestra aplicación como por ejemplo una clase Médico, Utiller@, Jefe/a
de prensa etc. que pertenezcan también al equipo técnico de la
selección, lo podemos hacer de forma muy sencilla ya que en la clase
padre (SeleccionFutbol) tenemos implementado parte de sus datos y de
su comportamiento y solo habrá que implementar los atributos y
métodos propios de esa clase.
Herencia
En el código que se ha escrito hay dos palabras reservadas que son "extends",
"protected" y "super". El significado de ellas es el siguiente:
extends: Esta palabra reservada, indica a la clase hija cual va a ser su clase padre,
es decir que por ejemplo en la clase Futbolista al poner "public class Futbolista
extends SeleccionFutbol" le estamos indicando a la clase 'Futbolista' que su clase
padre es la clase 'SeleccionFutbol' o dicho de otra manera le decimos a la clase
'Futbolista' que se 'copie' todos los atributos y métodos públicos o protegidos de
la clase 'SeleccionFutbol'.
protected: sirve para indicar un tipo de visibilidad de los atributos y métodos de
la clase padre y significa que cuando un atributo es 'protected' o protegido, solo
es visible ese atributo o método desde una de las clases hijas y no desde otra
clase.
super: sirve para llamar al constructor de la clase padre.
Polimorfismo
El Polimorfismo es uno de los 4 pilares de la
programación orientada a objetos (POO) junto con
la Abstracción, Encapsulación y Herencia. Este
termino se utiliza en la POO para “referirse a la
propiedad por la que es posible enviar mensajes
sintácticamente iguales a objetos de tipos distintos“.
Polimorfismo
El Polimorfismo es uno de los 4 pilares de la programación
orientada a objetos (POO) junto con
la Abstracción, Encapsulación y Herencia. Este termino se
utiliza en la POO para “referirse a la propiedad por la que
es posible enviar mensajes sintácticamente iguales
a objetos de tipos distintos“. Vamos a colocar el ejemplo
anterior en la que queríamos simular el comportamiento
que tendrían los diferentes integrantes de la selección
española de fútbol
Polimorfismo
. Para este ejemplo nos vamos a basar en el siguiente diagrama de clases:
Polimorfismo
Este sería el código
Polimorfismo
Al ver este código notamos que se utiliza dos veces la palabra
reservada “abstract“. Esta palabra nos indica que la clase
“SeleccionFutbol” es una clase abstracta y las clases abstractas no se
pueden instanciar, por tanto nunca podremos hacer un “new
SeleccionFutbol()”. Otra cosa que vemos es que también utilizamos
la palabra reservada abstract en un método (en el método
entrenamiento). Esto quiere decir que todas las clases hijas de la
clase “SeleccionFubol” tienen que tener implementado ese método
obligatoriamente. Por tanto con esto que se acaba de contar y
diciendo que la palabra “Polimorfismo” significa “muchas formas”,
podéis deducir que la clase “SeleccionFutbol” es una clase que puede
adoptar diferentes formas y en este ejemplo puede adoptar las
formas de“Futbolista”, “Entrenador” y “Masajista”.
Polimorfismo
Una cosa muy buena que tiene la herencia y el
polimorfismo, es que las clases hijas no solo
heredan los métodos (o la implementación de los
métodos) de las clases padre, sino que las clases
hijas se pueden especializar. Esto significa que una
clase hija puede “redefinir” los métodos de su clase
padre; es decir, que se puede volver a escribir ese
método y de ahi la especialización.
Polimorfismo
Vamos a ver la implementación de las clases hijas:
Polimorfismo
Polimorfismo
Polimorfismo
Como vemos en el código todas las clases hijas tienen implementada
el método “entrenamiento()” ya que al tenerlo en la clase padre como
método abstracto, es obligatorio que todas las clases hijas tengan ese
método. Por otro lado observamos en el código que encima del
método “entrenamiento()” y otros métodos, tenemos la etiqueta
“@Override“. Esta etiqueta sirve para indicar en el código que
estamos“re-escribiendo o especializando” un método que se
encuentra en la clase padre y que queremos redefinir en la clase hija.
Esta etiqueta solo y exclusivamente esta en los métodos de las clases
hijas que tenemos definida en la clase padre, por tanto cuando se
llame a esos métodos, las clases hijas ejecutaran el método redefinido
en la clase hija y las que no lo hayan redefinido se ejecutará es
método de la clase padre.
Polimorfismo
En la siguiente imagen vemos como hacemos estas especializaciones:
Polimorfismo
El polimorfismo es un concepto un poco más
avanzado que la herencia y puede ser muy útil a la
hora de jerarquizar y querer dar un patrón de
comportamiento común a una serie de objetos que
heredan de la misma clase.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (11)

Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Polimorfismo_PApps
Polimorfismo_PAppsPolimorfismo_PApps
Polimorfismo_PApps
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 
Universidad de panamá
Universidad de panamáUniversidad de panamá
Universidad de panamá
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
polimorfismo
polimorfismopolimorfismo
polimorfismo
 
Guía polimorfismo
Guía polimorfismoGuía polimorfismo
Guía polimorfismo
 

Destacado

Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismonestor_moren
 
Polimorfismo - Higor Nucci
Polimorfismo - Higor NucciPolimorfismo - Higor Nucci
Polimorfismo - Higor NucciHigor Nucci
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion prograzeta2015
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoAngel Vázquez Patiño
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfacesRafael Pinheiro
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismoArthur Emanuel
 
Gov & Education Day 2015 - Tim Lee, City of Los Angeles
Gov & Education Day 2015 - Tim Lee, City of Los AngelesGov & Education Day 2015 - Tim Lee, City of Los Angeles
Gov & Education Day 2015 - Tim Lee, City of Los AngelesSplunk
 
Who wants to be a millionaire
Who wants to be a millionaire Who wants to be a millionaire
Who wants to be a millionaire toretolan
 
Jenny Kopale Resume 2014
Jenny Kopale Resume 2014Jenny Kopale Resume 2014
Jenny Kopale Resume 2014Jenny Kopale
 

Destacado (20)

Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismo
 
Polimorfismo - Higor Nucci
Polimorfismo - Higor NucciPolimorfismo - Higor Nucci
Polimorfismo - Higor Nucci
 
Polimorfismo em jogos
Polimorfismo em jogosPolimorfismo em jogos
Polimorfismo em jogos
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion progra
 
Java - Boas práticas
Java - Boas práticasJava - Boas práticas
Java - Boas práticas
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismo
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfaces
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
Kevin calle
Kevin calleKevin calle
Kevin calle
 
Benamer H
Benamer HBenamer H
Benamer H
 
Aminian A - AIMRADIAL 2013 - Glidesheath slender
Aminian A - AIMRADIAL 2013 - Glidesheath slenderAminian A - AIMRADIAL 2013 - Glidesheath slender
Aminian A - AIMRADIAL 2013 - Glidesheath slender
 
Gov & Education Day 2015 - Tim Lee, City of Los Angeles
Gov & Education Day 2015 - Tim Lee, City of Los AngelesGov & Education Day 2015 - Tim Lee, City of Los Angeles
Gov & Education Day 2015 - Tim Lee, City of Los Angeles
 
Sciahbasi A - AIMRADIAL 2013 - Heparin vs bivalirudin
Sciahbasi A - AIMRADIAL 2013 - Heparin vs bivalirudinSciahbasi A - AIMRADIAL 2013 - Heparin vs bivalirudin
Sciahbasi A - AIMRADIAL 2013 - Heparin vs bivalirudin
 
Who wants to be a millionaire
Who wants to be a millionaire Who wants to be a millionaire
Who wants to be a millionaire
 
Jenny Kopale Resume 2014
Jenny Kopale Resume 2014Jenny Kopale Resume 2014
Jenny Kopale Resume 2014
 
Louvard Y
Louvard YLouvard Y
Louvard Y
 
1.Infosys Fresher Award0000
1.Infosys Fresher Award00001.Infosys Fresher Award0000
1.Infosys Fresher Award0000
 
Minha S
Minha SMinha S
Minha S
 
Presentacion Sin Titulo
Presentacion Sin TituloPresentacion Sin Titulo
Presentacion Sin Titulo
 
Certificate_1
Certificate_1Certificate_1
Certificate_1
 

Similar a Herencia yPolimorfismo (20)

Poo en java herencia
Poo en java   herenciaPoo en java   herencia
Poo en java herencia
 
Herencia y Polimorfismo en Java
Herencia y Polimorfismo en JavaHerencia y Polimorfismo en Java
Herencia y Polimorfismo en Java
 
Guia poo php
Guia poo phpGuia poo php
Guia poo php
 
Guía Herencia PO_O
Guía Herencia PO_OGuía Herencia PO_O
Guía Herencia PO_O
 
UT05-POO.pdf
UT05-POO.pdfUT05-POO.pdf
UT05-POO.pdf
 
Guía PHP Orientado a Objeto con MVC
Guía PHP Orientado a Objeto con MVC Guía PHP Orientado a Objeto con MVC
Guía PHP Orientado a Objeto con MVC
 
Programación de aplicaciones
Programación de aplicacionesProgramación de aplicaciones
Programación de aplicaciones
 
Programaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosProgramaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetos
 
Qué es la poo
Qué es la pooQué es la poo
Qué es la poo
 
Para
ParaPara
Para
 
Para
ParaPara
Para
 
Reporte
ReporteReporte
Reporte
 
Reporte
ReporteReporte
Reporte
 
Explicacion de interface
Explicacion de interfaceExplicacion de interface
Explicacion de interface
 
JAVA- basico
JAVA- basicoJAVA- basico
JAVA- basico
 
POO y AS3
POO y AS3POO y AS3
POO y AS3
 
Php orientado a objetos, Ronald Nina
Php orientado a objetos, Ronald NinaPhp orientado a objetos, Ronald Nina
Php orientado a objetos, Ronald Nina
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Presentacion de clases en c#
Presentacion de clases en c#Presentacion de clases en c#
Presentacion de clases en c#
 
Polimorfismo 14k
Polimorfismo 14kPolimorfismo 14k
Polimorfismo 14k
 

Último

programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxMapyMerma1
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
Flores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - BotánicaFlores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - BotánicaJuan Carlos Fonseca Mata
 

Último (20)

programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptx
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Unidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDIUnidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDI
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
Flores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - BotánicaFlores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - Botánica
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 

Herencia yPolimorfismo

  • 1. Polimorfismo y Herencia en Java Principios de la POO Realizado por: José Daniel Pluas Ci 14.331.732
  • 2. Herencia "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. Herencia El siguiente ejemplo es un caso en el que vamos a simular el comportamiento que tendrían los diferentes integrantes de la selección española de futbol; definiendo tres clases que van a representar objetos Futbolista, Entrenador y Masajista. De cada unos de ellos vamos a necesitar algunos datos que reflejaremos en los atributos y una serie de acciones que reflejaremos en sus métodos. Estos atributos y métodos los mostramos en el siguiente diagrama de clases:
  • 4. Herencia En las tres clases tenemos atributos y métodos que son iguales ya que los tres tienen los atributosid, Nombre, Apellidos y Edad; y los tres tienen los métodos de Viajar y Concentrarse
  • 5. Herencia A nivel de código tenemos lo siguiente tras ver el diagrama de clases
  • 6. Herencia En este punto es que estamos escribiendo mucho código repetido ya que las tres clases tienen métodos y atributos comunes, de ahí y como veremos enseguida, decimos que la herencia consiste en "sacar factor común" para no escribir código de más, por tanto lo que haremos sera crearnos una clase con el "código que es común a las tres clases" (a esta clase se le denomina en la herencia como"Clase Padre o SuperClase") y el código que es especifico de cada clase, lo dejaremos en ella, siendo denominadas estas clases como"Clases Hijas", las cuales heredan de la clase padre todos los atributos y métodos públicos o protegidos. Es muy importante decir que las clases hijas no van a heredar nunca los atributos y métodos privados de la clase padre
  • 8. Herencia A nivel de código tenemos los siguientes cambios
  • 9. Herencia Como se puede observar queda un código más limpio, estructurado y con menos líneas de código, lo que lo hace más legible, y es un código reutilizable, lo que significa que ahora si queremos añadir más clases a nuestra aplicación como por ejemplo una clase Médico, Utiller@, Jefe/a de prensa etc. que pertenezcan también al equipo técnico de la selección, lo podemos hacer de forma muy sencilla ya que en la clase padre (SeleccionFutbol) tenemos implementado parte de sus datos y de su comportamiento y solo habrá que implementar los atributos y métodos propios de esa clase.
  • 10. Herencia En el código que se ha escrito hay dos palabras reservadas que son "extends", "protected" y "super". El significado de ellas es el siguiente: extends: Esta palabra reservada, indica a la clase hija cual va a ser su clase padre, es decir que por ejemplo en la clase Futbolista al poner "public class Futbolista extends SeleccionFutbol" le estamos indicando a la clase 'Futbolista' que su clase padre es la clase 'SeleccionFutbol' o dicho de otra manera le decimos a la clase 'Futbolista' que se 'copie' todos los atributos y métodos públicos o protegidos de la clase 'SeleccionFutbol'. protected: sirve para indicar un tipo de visibilidad de los atributos y métodos de la clase padre y significa que cuando un atributo es 'protected' o protegido, solo es visible ese atributo o método desde una de las clases hijas y no desde otra clase. super: sirve para llamar al constructor de la clase padre.
  • 11. Polimorfismo El Polimorfismo es uno de los 4 pilares de la programación orientada a objetos (POO) junto con la Abstracción, Encapsulación y Herencia. Este termino se utiliza en la POO para “referirse a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos“.
  • 12. Polimorfismo El Polimorfismo es uno de los 4 pilares de la programación orientada a objetos (POO) junto con la Abstracción, Encapsulación y Herencia. Este termino se utiliza en la POO para “referirse a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos“. Vamos a colocar el ejemplo anterior en la que queríamos simular el comportamiento que tendrían los diferentes integrantes de la selección española de fútbol
  • 13. Polimorfismo . Para este ejemplo nos vamos a basar en el siguiente diagrama de clases:
  • 15. Polimorfismo Al ver este código notamos que se utiliza dos veces la palabra reservada “abstract“. Esta palabra nos indica que la clase “SeleccionFutbol” es una clase abstracta y las clases abstractas no se pueden instanciar, por tanto nunca podremos hacer un “new SeleccionFutbol()”. Otra cosa que vemos es que también utilizamos la palabra reservada abstract en un método (en el método entrenamiento). Esto quiere decir que todas las clases hijas de la clase “SeleccionFubol” tienen que tener implementado ese método obligatoriamente. Por tanto con esto que se acaba de contar y diciendo que la palabra “Polimorfismo” significa “muchas formas”, podéis deducir que la clase “SeleccionFutbol” es una clase que puede adoptar diferentes formas y en este ejemplo puede adoptar las formas de“Futbolista”, “Entrenador” y “Masajista”.
  • 16. Polimorfismo Una cosa muy buena que tiene la herencia y el polimorfismo, es que las clases hijas no solo heredan los métodos (o la implementación de los métodos) de las clases padre, sino que las clases hijas se pueden especializar. Esto significa que una clase hija puede “redefinir” los métodos de su clase padre; es decir, que se puede volver a escribir ese método y de ahi la especialización.
  • 17. Polimorfismo Vamos a ver la implementación de las clases hijas:
  • 20. Polimorfismo Como vemos en el código todas las clases hijas tienen implementada el método “entrenamiento()” ya que al tenerlo en la clase padre como método abstracto, es obligatorio que todas las clases hijas tengan ese método. Por otro lado observamos en el código que encima del método “entrenamiento()” y otros métodos, tenemos la etiqueta “@Override“. Esta etiqueta sirve para indicar en el código que estamos“re-escribiendo o especializando” un método que se encuentra en la clase padre y que queremos redefinir en la clase hija. Esta etiqueta solo y exclusivamente esta en los métodos de las clases hijas que tenemos definida en la clase padre, por tanto cuando se llame a esos métodos, las clases hijas ejecutaran el método redefinido en la clase hija y las que no lo hayan redefinido se ejecutará es método de la clase padre.
  • 21. Polimorfismo En la siguiente imagen vemos como hacemos estas especializaciones:
  • 22. Polimorfismo El polimorfismo es un concepto un poco más avanzado que la herencia y puede ser muy útil a la hora de jerarquizar y querer dar un patrón de comportamiento común a una serie de objetos que heredan de la misma clase.