Sie sind auf Seite 1von 3

POO Polimorfismo en Java

El polimorfismo nos permite escribir programas para procesar objetos que compartan la
misma superclase, como si todos fueran objetos de la superclase; esto puede simplificar la
programacin.
Con el polimorfismo, podemos disear e implementar sistemas que puedan extenderse con
facilidad. Las nicas partes de un programa que deben alterarse para dar cabida a las nuevas
clases son las que requieren un conocimiento directo de las nuevas clases que el programador
agregar a la jerarqua.
Comportamiento polimrfico
Cuando el compilador encuentra una llamada a un mtodo que se realiza a travs de una
variable, determina si el mtodo puede llamarse verificando el tipo de clase de la variable. Si
esa clase contiene la declaracin del mtodo apropiada (o hereda una), se compila la llamada.
En tiempo de ejecucin, el tipo del objeto al cual se refiere la variable es el que determina el
mtodo que se utilizar.
Clases y mtodos abstractos
Las clases abstractas no se pueden utilizar para instanciar objetos, ya que estn incompletas.
El propsito principal de una clase abstracta es proporcionar una superclase apropiada, a
partir de la cual puedan heredar otras clases y, por ende, compartir un diseo comn.
Las clases que pueden utilizarse para instanciar objetos se llaman clases concretas. Dichas
clases proporcionan implementaciones de cada mtodo que declaran (algunas de las
implementaciones pueden heredarse).
Los programadores escriben cdigo cliente que utiliza slo tipos de superclases abstractas
para reducir las dependencias del cdigo cliente en tipos de subclases especficas.
Algunas veces las clases abstractas constituyen varios niveles de la jerarqua.
Por lo general, una clase abstracta contiene uno o ms mtodos abstractos.
Los mtodos abstractos no proporcionan implementaciones.
Una clase que contiene mtodos abstractos debe declararse como clase abstracta. Cada
subclase concreta debe proporcionar implementaciones de cada uno de los mtodos
abstractos de la superclase.
Los constructores y los mtodos static no pueden declararse como abstract.
Las variables de las superclases abstractas pueden guardar referencias a objetos de cualquier
clase concreta que se derive de esas superclases. Por lo general, los programas utilizan dichas
variables para manipular los objetos de las subclases mediante el polimorfismo.
En especial, el polimorfismo es efectivo para implementar los sistemas de software en capas.

El diseador de una jerarqua de clases puede exigir que cada subclase concreta proporcione
una implementacin apropiada del mtodo, para lo cual incluye un mtodo abstract en una
superclase.
La mayora de las llamadas a los mtodos se resuelven en tiempo de ejecucin, con base en
el tipo del objeto que se est manipulando. Este proceso se conoce como vinculacin dinmica
o vinculacin postergada.
La variable de una superclase puede utilizarse para invocar slo a los mtodos declarados en
la superclase.
El operador instanceof determina si un objeto tiene la relacin es un con un tipo
especfico.
Todos los objetos en Java conocen su propia clase y pueden acceder a esta informacin a
travs del mtodo getClass de la clase Object, el cual devuelve un objeto de tipo Class
(paquete java. lang).
La relacin es un se aplica slo entre la subclase y sus superclases, no viceversa.
Mtodos y clases final
Un mtodo que se declara como final en una superclase no se puede sobrescribir en una
subclase.
Los mtodos que se declaran como private son final de manera implcita, ya que es imposible
sobrescribirlos en una subclase.
Los mtodos que se declaran como static son final de manera implcita.
La declaracin de un mtodo final no puede cambiar, por lo que todas las subclases utilizan
la misma implementacin del mtodo, y las llamadas a los mtodos final se resuelven en
tiempo de compilacin; a esto se le conoce como vinculacin esttica.
Como el compilador sabe que los mtodos final no se pueden sobrescribir, puede optimizar
los programas al eliminar las llamadas a los mtodos final y sustituirlas con el cdigo
expandido de sus declaraciones en cada una de las ubicaciones de las llamadas al mtodo; a
esta tcnica se le conoce como poner el cdigo en lnea.
Una clase que se declara como final no puede ser una superclase.
Todos los mtodos en una clase final son implcitamente final.
Creacin y uso de interfaces
Una interfaz especifica qu operaciones estn permitidas, pero no determina cmo se
realizan.
Una interfaz de Java describe a un conjunto de mtodos que pueden llamarse en un objeto.
La declaracin de una interfaz empieza con la palabra clave interface.

Todos los miembros de una interfaz deben ser public, y las interfaces no pueden especificar
ningn detalle de implementacin, como las declaraciones de mtodos concretos y las
variables de instancia.
Todos los mtodos que se declaran en una interfaz son public abstract de manera implcita, y
todos los campos son public, static y final de manera implcita.
Para utilizar una interfaz, una clase concreta debe especificar que implementa (implements)
a esa interfaz, y debe declarar cada uno de los mtodos de la interfaz con la firma especificada
en su declaracin. Una clase que no implementa a todos los mtodos de una interfaz debe
declararse como abstract.
Implementar una interfaz es como firmar un contrato con el compilador que diga, Declarar
todos los mtodos especificados por la interfaz, o de lo contrario declarar mi clase como
abstract.
Por lo general, una interfaz se utiliza cuando clases dispares (es decir, no relacionadas)
necesitan compartir mtodos y constantes comunes. Esto permite que los objetos de clases no
relacionadas se procesen en forma polimrfica; los objetos de clases que implementan la
misma interfaz pueden responder a las mismas llamadas a mtodos.
Usted puede crear una interfaz que describa la funcionalidad deseada, y despus
implementar esa interfaz en cualquier clase que requiera esa funcionalidad.
A menudo, una interfaz se utiliza en vez de una clase abstract cuando no hay una
implementacin predeterminada que heredar, esto es, no hay variables de instancia ni
implementaciones de mtodos predeterminadas.
Al igual que las clases public abstract, las interfaces son comnmente de tipo public, por lo
que se declaran en archivos por s solas con el mismo nombre que la interfaz, y la extensin de
archivo .java.
Java no permite que las subclases hereden de ms de una superclase, pero s permite que
una clase herede de una superclase e implemente ms de una interfaz.
Todos los objetos de una clase que implementan varias interfaces tienen la relacin es un
con cada tipo de interfaz implementada.
Una interfaz puede declarar constantes. Las constantes son implcitamente public, static y
final.

Das könnte Ihnen auch gefallen