SlideShare ist ein Scribd-Unternehmen logo
1 von 9
4 Unidad Polimorfismo
4.1 Definición.
4.2 Clases abstractas: definición, métodos abstractos, implementación de clases abstractas,
modelado de clases abstractas.
4.3 Interfaces: definición, implementación de interfaces, herencia de interfaces.
4.4 Variables polimórficas (plantillas): definición, uso y aplicaciones.
4.1 Polimorfismo
Es la habilidad que poseen los objetos para reaccionar de modo diferente ante los mismos
mensajes.
El polimorfismo se refiere a la posibilidad de definir múltiples clases con funcionalidad
diferente, pero con métodos o propiedades denominados de forma idéntica, que pueden
utilizarse de manera intercambiable mediante código cliente en tiempo de ejecución.
Conceptos relacionados con polimorfismo
 Sobrecarga (overload).
 Herencia.
 Sobre-escritura (override).
Sobrecarga [Overload]
 La sobrecarga representa diferentes maneras de realizar una misma acción.
 En los programas se usa el mismo nombre en diferentes métodos con diferentes
firmas [número, orden y tipo de los parámetros].
 El código de programación asociado a cada sobrecarga puede variar.
Ejemplos:
 miEmpleado.Contratar (“Juan”, “Ventas”, 2500)
 miEmpleado.Contratar (“Juan”)
 miEmpleado.Contratar (“Juan”, 2500)
Ejemplo de sobrecarga [Overload]
Mipuerta.Abrir(Adentro,Afuera) Mipuerta.Abrir(Afuera,Adentro)
Mipuerta.Abrir ()
Herencia
Vehículo
CaballosDeFuerza :
int
Arrancar() : void
Detener() : void
Herencia
Sobreescritura [Overriding]
 Sucede cuando una clase “B” hereda características de una clase “A”, pero la clase
“B” re-define las características heredadas de “A”.
 Propiedades y métodos pueden heredarse de una superclase. Si estas propiedades y
métodos son re-definidos en la clase derivada, se dice que han sido “Sobrescritos”.
Ejemplo de polimorfismo paramétrico
 Una clase define varios métodos con el mismo nombre pero diferente firma
(sobrecarga)
 Se elige el método de acuerdo a la firma aplicada.
 La sobrecarga del constructor es un ejemplo de ello.
Figura
+ Figura()
+ Figura(ValorInicial:
int)
Superclase
Clase Base
Clase padre
Clase madre
Subclases
(Clases
Derivadas)
(Clases Hijas)
Automóvil
CantidadDePuertas : int
Acelerar (int Cuanto) :
void
PalaMecanica
PesoMaximoDeLevante : int
MoverPala(string direccion) :
void
Ejemplo de polimorfismo de sobrecarga (Overload)
 Diferentes clases tienen un método con el mismo nombre, pero comportamiento
diferente.
 Se aplica el método de acuerdo al objeto en que se trabaje.
Cuadrado
+ Dibujar() : void
Ejemplo de polimorfismo de subtipo (override)
Circunferencia
+ Dibujar() : void
Triangulo
+ Dibujar() : void
InstrumentoMusical
+ Afinar() : void
Guitarra
+ Afinar() : void
Piano
+ Afinar() : void
Violín
+ Afinar() : void
4.2 Clases Abstractas
Este Tipo de Clases nos permiten crear “método generales”, que recrean un
comportamiento común, pero sin especificar cómo lo hacen. A nivel de código tienen por
particularidad que algunos de sus métodos no tienen “cuerpo de declaración”, ¿qué quiere
decir esto? no tienen las llaves { } ni código dentro de ellos y deben estar precedidos por la
palabra clave abstract. Si unas clases contiene uno o más métodos abstractos está clase
debe ser abstracta. Estas clases como son generalidades no pueden ser instanciadas por
ningún objeto (se dice que su nivel de abstracción es demasiado alto), entonces su único fin
es ser heredado/extendido por otras clases.
Ejemplo
public abstract class Figura {
// Atributos:
public int numeroLados;
public int area;
public int volumen;
// Métodos:
abstract public void calcularArea();
abstract public void calcularVolumen();
}
 Las clases que hereden de la clase Abstracta deben implementar todos los métodos
abstractos.
 Se debe tener presente que las clases abstractas sí pueden heredar de otras clases.
 La firma o parámetros de los métodos así como el tipo de dato deben respetarse, de
lo contrario se está hablando de otro método totalmente diferente.
 Si una clase abstracta está compuesta sólo por métodos abstractos y constantes
entonces podemos hablar de una interface.
4.3 Interfaces
Las interfaces, tal como las clases abstractas. No se pueden instanciar. Sus métodos deben
ser re-escritos por la clase que implemente.
Ejemplo:
public interface MatematicaVectorial {
public static double pi = 3.1415;
Public static double e = 2.71828;
Public double[] sumar(int[][] vectores);
public double[] restar(int[][] vectores);
public double productoPunto(int[][] vectores);
}
una interface es una clase abstracta pura, es decir, una clase donde todos los métodos son
abstractos (no se implementa ninguno). Esto permite al diseñador de clases establecer la
forma que tendrá una clase, los nombres de los métodos sus argumentos o bien los tipos de
retorno, pero no cómo será el desarrollo del bloque de código. Los interfaces realmente
establecen un protocolo entre las clases.
Para crear una interface se utiliza la palabra clave “interface” en lugar de class. La interfaz
puede definirse public o sin modificador de acceso, y tiene el mismo significado que para
las clases aunque todos los métodos que se declaran en una interfaz son públicos.
Para indicar que una clase implementa los métodos de una interface se utiliza la palabra
clave “implements”. Una clase puede implementar más de una interface.
El interfaces se diferencia de la clase abstracta en lo siguiente:
En la interface todo método es abstracto y público sin necesidad de declararlo, por lo tanto
no implementará ningún método que declara.
Las variables declaradas en una interface serán variables de clase y nunca de instancia por
lo que su valor será constante en todas las instancias que se creen de la clase que
implementa una interface. Actuarán como constantes.
Una interface se implementa (implements) no se extiende (extends) por sus subclases. Una
clase puede implementar más de un interfaz, pero sólo puede extender de una clase (es lo
más parecido que tiene Java a la herencia múltiple)
Las variables definidas como de tipo de clase de un interface se tendrán que crear a partir
de una clase que implemente ese interface Gráficamente la herencia múltiple podría
representarse mediante el siguiente gráfico:
4.4 Variables polimórficas
Polimorfismo: es la capacidad que tiene los objetos de comportarse de múltiples formas.
Polimorfismo: Upcasting Únicamente tienen sentido por la existencia de la herencia.
¨El polimorfismo (o upcasting) consiste en la posibilidad de que una referencia a objetos de
una clase pueda conectarse también con objetos de descendientes de ésta.
Polimorfismo estátic es aquél en el que los tipos a los que se aplica el polimorfismo deben
ser explicitados y declarados uno por uno antes de poder ser utilizados.
ObjetoPersonalidad.java
public class ObjetoPersonalidad {
public String hablar() {
return "Soy un objeto.";
}
}
Las conexiones polimorfas se realizan a veces de manera implícita en el paso de
argumentos a una operación.
Referencias:
http://slashmobility.com/slash/cursos/fundamentos-java/Curso-Java-Inicial-
6%20Polimorfismo,%20Abstraccion%20e%20Interfaces.pdf
http://www2.uah.es/jcaceres/capsulas/java_interfaces.pdf
http://emartini.wordpress.com/2008/09/17/poo-clases-abstractas-interfaces-y-herencia-
multiple/
http://users.dcc.uchile.cl/~psalinas/uml/modelo.html
http://gl-epn-programacion-ii.blogspot.mx/2010/04/interfaces-en-java.html

Weitere ähnliche Inhalte

Was ist angesagt?

DIBUJO EN JFRAME CASA
DIBUJO EN JFRAME CASADIBUJO EN JFRAME CASA
DIBUJO EN JFRAME CASAAnel Sosa
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosJosé Antonio Sandoval Acosta
 
Principios electricos y aplicaciones digitalesl sesion 1
Principios electricos y aplicaciones digitalesl sesion 1Principios electricos y aplicaciones digitalesl sesion 1
Principios electricos y aplicaciones digitalesl sesion 1Rodolfo Alcantara Rosales
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
Poliformismo
PoliformismoPoliformismo
PoliformismoSa_Van
 
Multiprogramacion
MultiprogramacionMultiprogramacion
MultiprogramacionIrisMTF16
 
Bibliotecas o libreria de c++
Bibliotecas o libreria de c++Bibliotecas o libreria de c++
Bibliotecas o libreria de c++Idalia Tristan
 
Palabras Reservadas en C++
Palabras Reservadas en C++Palabras Reservadas en C++
Palabras Reservadas en C++ncrmax
 
UML: Diagrama de caso de uso
UML: Diagrama de caso de usoUML: Diagrama de caso de uso
UML: Diagrama de caso de usoElvin Hernandez
 
1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladoresJoOsee Kette
 
 Diagramas uml de sistema de cajero automático
 Diagramas uml de sistema de cajero automático Diagramas uml de sistema de cajero automático
 Diagramas uml de sistema de cajero automáticoItzel656131
 
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
 
Cubo y cuadrado java
Cubo y cuadrado javaCubo y cuadrado java
Cubo y cuadrado javaRobert Wolf
 
Estructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la ProgramaciónEstructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la ProgramaciónFacultad de Ciencias y Sistemas
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automataJacqui Venegas
 

Was ist angesagt? (20)

04 j flex
04 j flex04 j flex
04 j flex
 
DIBUJO EN JFRAME CASA
DIBUJO EN JFRAME CASADIBUJO EN JFRAME CASA
DIBUJO EN JFRAME CASA
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
 
12 Curso de POO en java - entrada y salida de datos
12 Curso de POO en java - entrada y salida de datos12 Curso de POO en java - entrada y salida de datos
12 Curso de POO en java - entrada y salida de datos
 
Eventos en Java
Eventos en JavaEventos en Java
Eventos en Java
 
Principios electricos y aplicaciones digitalesl sesion 1
Principios electricos y aplicaciones digitalesl sesion 1Principios electricos y aplicaciones digitalesl sesion 1
Principios electricos y aplicaciones digitalesl sesion 1
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Poliformismo
PoliformismoPoliformismo
Poliformismo
 
Multiprogramacion
MultiprogramacionMultiprogramacion
Multiprogramacion
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datos
 
Bibliotecas o libreria de c++
Bibliotecas o libreria de c++Bibliotecas o libreria de c++
Bibliotecas o libreria de c++
 
Palabras Reservadas en C++
Palabras Reservadas en C++Palabras Reservadas en C++
Palabras Reservadas en C++
 
UML: Diagrama de caso de uso
UML: Diagrama de caso de usoUML: Diagrama de caso de uso
UML: Diagrama de caso de uso
 
1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores
 
 Diagramas uml de sistema de cajero automático
 Diagramas uml de sistema de cajero automático Diagramas uml de sistema de cajero automático
 Diagramas uml de sistema de cajero automático
 
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
 
Cubo y cuadrado java
Cubo y cuadrado javaCubo y cuadrado java
Cubo y cuadrado java
 
Estructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la ProgramaciónEstructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la Programación
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata
 

Ähnlich wie 4 unidad polimorfismo (20)

Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 
Laboratorio interfaces
Laboratorio interfacesLaboratorio interfaces
Laboratorio interfaces
 
Guía polimorfismo
Guía polimorfismoGuía polimorfismo
Guía polimorfismo
 
09 Clases Abstractas E Interfaces
09   Clases Abstractas E Interfaces09   Clases Abstractas E Interfaces
09 Clases Abstractas E Interfaces
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
Polimorfism oo
Polimorfism ooPolimorfism oo
Polimorfism oo
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
 
Intro Java
Intro JavaIntro Java
Intro Java
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion progra
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]
 
Clases abstractas interfaces
Clases abstractas interfacesClases abstractas interfaces
Clases abstractas interfaces
 
Investigacion v unidad
Investigacion v unidadInvestigacion v unidad
Investigacion v unidad
 
5 polimorfismo
5 polimorfismo5 polimorfismo
5 polimorfismo
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Interfaces
InterfacesInterfaces
Interfaces
 
Interfaces
InterfacesInterfaces
Interfaces
 
Interfaces 14k
Interfaces 14kInterfaces 14k
Interfaces 14k
 
U8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdfU8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdf
 
Interfaz en Java y en C#
Interfaz en Java y en C#Interfaz en Java y en C#
Interfaz en Java y en C#
 
10 - Slides-Java sesion.pptx
10 - Slides-Java sesion.pptx10 - Slides-Java sesion.pptx
10 - Slides-Java sesion.pptx
 

Kürzlich hochgeladen

propoketapropoketapropoketapropoketa.pptx
propoketapropoketapropoketapropoketa.pptxpropoketapropoketapropoketapropoketa.pptx
propoketapropoketapropoketapropoketa.pptxJenniferNatalyRomero
 
BEIBEN truck motor y CHASIS _103940.pptx
BEIBEN truck motor y CHASIS _103940.pptxBEIBEN truck motor y CHASIS _103940.pptx
BEIBEN truck motor y CHASIS _103940.pptxejbcemanvetac
 
Manual de usuario de camioneta Mitsubishi L200.pdf
Manual de usuario de camioneta Mitsubishi L200.pdfManual de usuario de camioneta Mitsubishi L200.pdf
Manual de usuario de camioneta Mitsubishi L200.pdfotonimaster11
 
Mantenimientos básicos que debes dar a tu auto
Mantenimientos básicos que debes dar a tu autoMantenimientos básicos que debes dar a tu auto
Mantenimientos básicos que debes dar a tu autoMiguelManual2
 
3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...
3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...
3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...AileenCortez3
 
tipos de suspension automotriz -rea marlon.pdf
tipos de suspension automotriz -rea marlon.pdftipos de suspension automotriz -rea marlon.pdf
tipos de suspension automotriz -rea marlon.pdfmarlonrea6
 
unidades de medida aplicadas en gastronomia.pdf
unidades de medida aplicadas en gastronomia.pdfunidades de medida aplicadas en gastronomia.pdf
unidades de medida aplicadas en gastronomia.pdfedutubercocina
 
345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf
345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf
345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdfJoseAlbertoRincon
 
SENATI - Plantilla Power Point - horizontal.pptx
SENATI - Plantilla  Power Point - horizontal.pptxSENATI - Plantilla  Power Point - horizontal.pptx
SENATI - Plantilla Power Point - horizontal.pptxluiizvm
 
sistema-electrico-carroceria del motor de un vehículo.pdf
sistema-electrico-carroceria del motor de un vehículo.pdfsistema-electrico-carroceria del motor de un vehículo.pdf
sistema-electrico-carroceria del motor de un vehículo.pdfcondorivillcaraninic
 
Capitulaciones-matrimoniales.pdddddddddddddptx
Capitulaciones-matrimoniales.pdddddddddddddptxCapitulaciones-matrimoniales.pdddddddddddddptx
Capitulaciones-matrimoniales.pdddddddddddddptxmarcelo478881
 
ELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptx
ELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptxELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptx
ELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptxJeff Villaplana
 

Kürzlich hochgeladen (12)

propoketapropoketapropoketapropoketa.pptx
propoketapropoketapropoketapropoketa.pptxpropoketapropoketapropoketapropoketa.pptx
propoketapropoketapropoketapropoketa.pptx
 
BEIBEN truck motor y CHASIS _103940.pptx
BEIBEN truck motor y CHASIS _103940.pptxBEIBEN truck motor y CHASIS _103940.pptx
BEIBEN truck motor y CHASIS _103940.pptx
 
Manual de usuario de camioneta Mitsubishi L200.pdf
Manual de usuario de camioneta Mitsubishi L200.pdfManual de usuario de camioneta Mitsubishi L200.pdf
Manual de usuario de camioneta Mitsubishi L200.pdf
 
Mantenimientos básicos que debes dar a tu auto
Mantenimientos básicos que debes dar a tu autoMantenimientos básicos que debes dar a tu auto
Mantenimientos básicos que debes dar a tu auto
 
3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...
3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...
3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...
 
tipos de suspension automotriz -rea marlon.pdf
tipos de suspension automotriz -rea marlon.pdftipos de suspension automotriz -rea marlon.pdf
tipos de suspension automotriz -rea marlon.pdf
 
unidades de medida aplicadas en gastronomia.pdf
unidades de medida aplicadas en gastronomia.pdfunidades de medida aplicadas en gastronomia.pdf
unidades de medida aplicadas en gastronomia.pdf
 
345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf
345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf
345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf
 
SENATI - Plantilla Power Point - horizontal.pptx
SENATI - Plantilla  Power Point - horizontal.pptxSENATI - Plantilla  Power Point - horizontal.pptx
SENATI - Plantilla Power Point - horizontal.pptx
 
sistema-electrico-carroceria del motor de un vehículo.pdf
sistema-electrico-carroceria del motor de un vehículo.pdfsistema-electrico-carroceria del motor de un vehículo.pdf
sistema-electrico-carroceria del motor de un vehículo.pdf
 
Capitulaciones-matrimoniales.pdddddddddddddptx
Capitulaciones-matrimoniales.pdddddddddddddptxCapitulaciones-matrimoniales.pdddddddddddddptx
Capitulaciones-matrimoniales.pdddddddddddddptx
 
ELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptx
ELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptxELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptx
ELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptx
 

4 unidad polimorfismo

  • 1. 4 Unidad Polimorfismo 4.1 Definición. 4.2 Clases abstractas: definición, métodos abstractos, implementación de clases abstractas, modelado de clases abstractas. 4.3 Interfaces: definición, implementación de interfaces, herencia de interfaces. 4.4 Variables polimórficas (plantillas): definición, uso y aplicaciones.
  • 2. 4.1 Polimorfismo Es la habilidad que poseen los objetos para reaccionar de modo diferente ante los mismos mensajes. El polimorfismo se refiere a la posibilidad de definir múltiples clases con funcionalidad diferente, pero con métodos o propiedades denominados de forma idéntica, que pueden utilizarse de manera intercambiable mediante código cliente en tiempo de ejecución. Conceptos relacionados con polimorfismo  Sobrecarga (overload).  Herencia.  Sobre-escritura (override). Sobrecarga [Overload]  La sobrecarga representa diferentes maneras de realizar una misma acción.  En los programas se usa el mismo nombre en diferentes métodos con diferentes firmas [número, orden y tipo de los parámetros].  El código de programación asociado a cada sobrecarga puede variar. Ejemplos:  miEmpleado.Contratar (“Juan”, “Ventas”, 2500)  miEmpleado.Contratar (“Juan”)  miEmpleado.Contratar (“Juan”, 2500) Ejemplo de sobrecarga [Overload] Mipuerta.Abrir(Adentro,Afuera) Mipuerta.Abrir(Afuera,Adentro)
  • 3. Mipuerta.Abrir () Herencia Vehículo CaballosDeFuerza : int Arrancar() : void Detener() : void Herencia Sobreescritura [Overriding]  Sucede cuando una clase “B” hereda características de una clase “A”, pero la clase “B” re-define las características heredadas de “A”.  Propiedades y métodos pueden heredarse de una superclase. Si estas propiedades y métodos son re-definidos en la clase derivada, se dice que han sido “Sobrescritos”. Ejemplo de polimorfismo paramétrico  Una clase define varios métodos con el mismo nombre pero diferente firma (sobrecarga)  Se elige el método de acuerdo a la firma aplicada.  La sobrecarga del constructor es un ejemplo de ello. Figura + Figura() + Figura(ValorInicial: int) Superclase Clase Base Clase padre Clase madre Subclases (Clases Derivadas) (Clases Hijas) Automóvil CantidadDePuertas : int Acelerar (int Cuanto) : void PalaMecanica PesoMaximoDeLevante : int MoverPala(string direccion) : void
  • 4. Ejemplo de polimorfismo de sobrecarga (Overload)  Diferentes clases tienen un método con el mismo nombre, pero comportamiento diferente.  Se aplica el método de acuerdo al objeto en que se trabaje. Cuadrado + Dibujar() : void Ejemplo de polimorfismo de subtipo (override) Circunferencia + Dibujar() : void Triangulo + Dibujar() : void InstrumentoMusical + Afinar() : void Guitarra + Afinar() : void Piano + Afinar() : void Violín + Afinar() : void
  • 5. 4.2 Clases Abstractas Este Tipo de Clases nos permiten crear “método generales”, que recrean un comportamiento común, pero sin especificar cómo lo hacen. A nivel de código tienen por particularidad que algunos de sus métodos no tienen “cuerpo de declaración”, ¿qué quiere decir esto? no tienen las llaves { } ni código dentro de ellos y deben estar precedidos por la palabra clave abstract. Si unas clases contiene uno o más métodos abstractos está clase debe ser abstracta. Estas clases como son generalidades no pueden ser instanciadas por ningún objeto (se dice que su nivel de abstracción es demasiado alto), entonces su único fin es ser heredado/extendido por otras clases. Ejemplo public abstract class Figura { // Atributos: public int numeroLados; public int area; public int volumen; // Métodos: abstract public void calcularArea(); abstract public void calcularVolumen(); }
  • 6.  Las clases que hereden de la clase Abstracta deben implementar todos los métodos abstractos.  Se debe tener presente que las clases abstractas sí pueden heredar de otras clases.  La firma o parámetros de los métodos así como el tipo de dato deben respetarse, de lo contrario se está hablando de otro método totalmente diferente.  Si una clase abstracta está compuesta sólo por métodos abstractos y constantes entonces podemos hablar de una interface. 4.3 Interfaces Las interfaces, tal como las clases abstractas. No se pueden instanciar. Sus métodos deben ser re-escritos por la clase que implemente. Ejemplo: public interface MatematicaVectorial { public static double pi = 3.1415; Public static double e = 2.71828; Public double[] sumar(int[][] vectores); public double[] restar(int[][] vectores); public double productoPunto(int[][] vectores); } una interface es una clase abstracta pura, es decir, una clase donde todos los métodos son abstractos (no se implementa ninguno). Esto permite al diseñador de clases establecer la forma que tendrá una clase, los nombres de los métodos sus argumentos o bien los tipos de retorno, pero no cómo será el desarrollo del bloque de código. Los interfaces realmente establecen un protocolo entre las clases. Para crear una interface se utiliza la palabra clave “interface” en lugar de class. La interfaz puede definirse public o sin modificador de acceso, y tiene el mismo significado que para las clases aunque todos los métodos que se declaran en una interfaz son públicos.
  • 7. Para indicar que una clase implementa los métodos de una interface se utiliza la palabra clave “implements”. Una clase puede implementar más de una interface. El interfaces se diferencia de la clase abstracta en lo siguiente: En la interface todo método es abstracto y público sin necesidad de declararlo, por lo tanto no implementará ningún método que declara. Las variables declaradas en una interface serán variables de clase y nunca de instancia por lo que su valor será constante en todas las instancias que se creen de la clase que implementa una interface. Actuarán como constantes. Una interface se implementa (implements) no se extiende (extends) por sus subclases. Una clase puede implementar más de un interfaz, pero sólo puede extender de una clase (es lo más parecido que tiene Java a la herencia múltiple) Las variables definidas como de tipo de clase de un interface se tendrán que crear a partir de una clase que implemente ese interface Gráficamente la herencia múltiple podría representarse mediante el siguiente gráfico: 4.4 Variables polimórficas Polimorfismo: es la capacidad que tiene los objetos de comportarse de múltiples formas. Polimorfismo: Upcasting Únicamente tienen sentido por la existencia de la herencia. ¨El polimorfismo (o upcasting) consiste en la posibilidad de que una referencia a objetos de una clase pueda conectarse también con objetos de descendientes de ésta. Polimorfismo estátic es aquél en el que los tipos a los que se aplica el polimorfismo deben ser explicitados y declarados uno por uno antes de poder ser utilizados.
  • 8. ObjetoPersonalidad.java public class ObjetoPersonalidad { public String hablar() { return "Soy un objeto."; } } Las conexiones polimorfas se realizan a veces de manera implícita en el paso de argumentos a una operación.