herencia y polimorfismo
TRANSCRIPT
![Page 1: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/1.jpg)
Herencia y PolimorfismoHerencia y Polimorfismo
Ing. Rolando Steep Quezada MartínezIng. Rolando Steep Quezada Martínez
[email protected]@upnorte.edu.pe
Programación Básica en Java y Programación Orientada a Objetos Programación Básica en Java y Programación Orientada a Objetos
![Page 2: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/2.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-22
HerenciaHerencia
• Consiste en crear una clase nueva, como un tipo de una clase existente. La clase nueva toma la forma de una clase existente y le agrega código (sin modificar la clase existente).
• Reuso de código.
• El compilador es el que hace la mayor parte del trabajo.
• Es una parte integral de Java.
![Page 3: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/3.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-33
Herencia en JavaHerencia en Java
![Page 4: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/4.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-44
Herencia y PolimorfismoHerencia y Polimorfismo
• Lo más interesante de la herencia es la relación entre la clase derivada y la clase base: “la clase derivada es un tipo de la clase base” (es-un o es-como-un). Java soporta esta relación.
• Upcasting es la conversión de una referencia a un objeto de la clase derivada, en una referencia a un objeto de la clase base.
• El upcasting es seguro: la clase derivada es un super conjunto de la clase base, podría contener más métodos que la clase base, pero seguro contiene los métodos de la clase base.
![Page 5: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/5.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-66
Práctica 5Práctica 5
Objetivos
– Crear jerarquías de clases para facilitar la reutilización de código.
– Identificar el escenario para la aplicación del polimorfismo.
![Page 6: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/6.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-88
Clase AbstractaClase Abstracta
• Una clase abstracta define una interfaz común para los diversos miembros de una jerarquía de clases.
• La clase abstracta contiene métodos que se definirán en las subclases.
• Todas las clases de la jerarquías pueden usar la misma interfaz gracias al polimorfismo
![Page 7: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/7.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-99
Clases Abstractas en JavaClases Abstractas en Java
![Page 8: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/8.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-1010
InterfaceInterface
• Es una clase totalmente Abstracta:– Todos su métodos son abstractos (public abstract)– Todos sus variables son constantes (public static final)
• En JAVA, una interface es una colección de definiciones de métodos sin cuerpo y de declaraciones de constantes de tipo primitivo, agrupadas bajo un nombre.
• Una interface es un tipo de dato nuevo.
• Una interface establece qué debe hacer la clase que la implementa, sin especificar el cómo.
• Las interfaces definen un tipo de dato, por lo tanto es posible declarar variables con el nombre de la interface.
![Page 9: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/9.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-1111
Interfaces en JavaInterfaces en Java
![Page 10: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/10.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-1212
Clase InternaClase Interna
• Una clase interne (inner class) es una clase anidada, definida en el cuerpo de otra clase o en el cuerpo de un método.
• Respetan las relaciones entre dos clases.• Existen 4 tipos:
Definidos en la Clase• Static (estáticas)• Member (miembro)
Definidos en un método• Local (local)• Anonymous (anónimas)
![Page 11: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/11.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-1313
Clase Interna. MiembroClase Interna. Miembro
• Son declaradas dentro del cuerpo de otra clase• El anidamiento esta permitido• Pueden acceder a las variables de su clase contenedora y
de alguna clase incluida.• Las clases interna no pueden contener declaraciones
estáticas.
![Page 12: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/12.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-1414
Clase Interna. Estática (anidada)Clase Interna. Estática (anidada)
• Las clases internas pueden declararse static, comúnmente denominadas clases anidadas.
• Las clases anidadas no tienen acceso a la referencia implícita.
![Page 13: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/13.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-1515
Clase Interna. LocalClase Interna. Local
• Esta declarada dentro del bloque de código de un método.• Todos los parámetros finales (constantes) declarados en el
bloque son accesibles por los métodos de la clase interna.
![Page 14: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/14.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-1616
Clase Interna. AnónimaClase Interna. Anónima
• Son clases internas que no tiene un nombre definido.• No pueden ser instanciadas.• Se definen en un método de la clase externa.
![Page 15: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/15.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-1717
Práctica 6Práctica 6
Objetivos
– Hacer uso de abstracciones para la construcción de aplicaciones extensibles.
![Page 16: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/16.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-1919
Enumerated Types (enums) Enumerated Types (enums)
• Enums son Comparable y Serializables. Las constantes de Enum deberían ser nombradas de manera similar que las constantes. Enums son básicamente un nuevo tipo de Clase.
• Ya que es una clase puede contener métodos
![Page 17: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/17.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-2020
Práctica 7Práctica 7
Objetivo
– Hacer uso del tipo Enum para la definición de constantes.
![Page 18: Herencia Y Polimorfismo](https://reader037.vdocuments.co/reader037/viewer/2022100304/5563a5dfd8b42a2b6a8b52d5/html5/thumbnails/18.jpg)
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-2222
ResumenResumen
• La herencia permite extender la funcionalidad de una clase sin modificarla siquiera.
• El polimorfismo es la capacidad de los objetos de suplantar a todos sus subtipos.
• Un método polimórfico es aquel que trabaja con la clase base de una jerarquía o con una interface.
• Las clases adquieren nuevas capacidades al implementar una interface.
• Las interfaces resuelven el problema de la herencia múltiple en Java.
• Una interfaz es una clase completamente abstracta.• Los tipos enumerados son un tipo especial de clase que
ofrecen mayor control sobre valores de selección constantes.