Java Player - ¿Que es el Polimorfismo en java? - Clases Abstractas vs Interfaces



Hoy vamos a ver que es el Polimorfismo.
Característica de Java que permite tomar como algo igual a un nivel superior dos cosas que son diferentes a un nivel más bajo. Ejemplo: animal, gato y perro. Los dos son animales a un nivel alto de abstracción (animal) pero diferentes a un nivel inferior. El polimorfismo básicamente permite olvidarse de ciertas características específicas de varios objetos para centrarse en lo que tengan en común, en lo que los haga iguales.
Java logra ofrecer esta habilidad gracias a dos cosas: las clases y métodos abstractos y las interfaces. Por lo tanto estas dos características hacen posible el polimorfismo en Java. Pero aquí surge una duda: ¿entonces en qué se diferencia una clase abstracta de una interface? ¿qué los hace diferentes? al fin y al cabo los métodos abstractos no tienen cuerpo, y los de una interface tampoco. Parecen lo mismo, pero no lo son.

Clases Abstractas vs Interfaces

A diferencia de las interfaces, las clases abstractas puede contener campos que no sean estáticos (static) y finales (final), y las mismas contienen métodos implementados.
Estas clases abstractas son similares a las interfaces, excepto que ellas proveen una implementación parcial, dejando a las subclases que completen la implementacion. Si una clase abstracta solo contiene la declaración de métodos abstractos, la misma debería ser crear como una interfaces en vez de clase abstracta.
Múltiples interfaces pueden ser implementadas por las clases, en cualquier lugar de la jerarquía de clases, si están o no relacionadas entre si de cualquiera manera.
Por comparación, una clase abstracta es mas comúnmente una subclase que comparte una porción de implementaciones. Una sola clase abstracta es una subclase de clases  similares que tiene un montón de cosas en común. (La implementacion de partes de la clase abstracta.), pero también tiene algunas diferencias (Los métodos abstractos.)
Por lo tanto, se puede decir que lo que diferencia una interface de una clase abstracta es que estas últimas pueden implementar métodos completos o partes de ellos que luego heredarán sus subclases, además de poder definir atributos. Es decir, una clase abstracta puede definir más concretamente la forma de sus futuras subclases, y una interface nunca puede definir nada acerca de la forma de las clases que la implementen, sólo los servicios que éstas deberán implementar, y no puede definir atributos (sólo statics y finals).
Si una clase implementa un método abstracto, esta clase debe ser declarada abstracta y no se podrá instanciar. Sus subclases heredarán todo extendiéndola, y a su vez, se da la posibilidad también de que éstas sean clases abstractas que definan más métodos abstractos.
Un ejemplo del uso de clases abstractas:

Saludos!


Java Player - ¿Que es el Polimorfismo en java? - Clases Abstractas vs Interfaces Java Player - ¿Que es el Polimorfismo en java? - Clases Abstractas vs Interfaces Reviewed by El lado oscuro de java on mayo 17, 2012 Rating: 5

No hay comentarios:

Con la tecnología de Blogger.