Está en la página 1de 21

PROGRMACIN ORIENTADA A OBJETOS

Clases abstractas, Interfaces y Polimorfismo

Interfaces

Las interfaces nos sirven para especificar lo que una clase debe hacer pero no como lo hace. En otras palabras nos permite modelar una clase. El concepto de Interface lleva un paso ms adelante la idea de las clases abstractas. En Java una interface es una clase abstracta pura, es decir una clase donde todos los mtodos son abstractos (no se implementa ninguno). Las interfaces no pueden ser instanciadas

No tienen variables de instancia y los mtodos no tienen cuerpo, similar a los mtodos abstractos de una clase
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones

Interfaces

Las interfaces estn diseadas para admitir la resolucin dinmica de mtodos (elegir que mtodo utilizar) durante la ejecucin. Es posible que clases de diferentes tipos implementen la misma interface an cuando no estn relacionadas entre s por la herencia. Cualquier cantidad de clases pueden implementar una interface. Una clase puede implementar cualquier nmero de interfaces.

Definicin de una interfaz

El acceso de la interfaz debe ser public o default (sin modificador) Los atributos y mtodos se declaran sin modificador de acceso. Todo mtodo es implcitamente abstracto y pblico. Si se declaran variables en la interfaz, estos son implcitamente public final y static (constante) y deben ser inicializados. No existen variables de instancia dentro de una interfaz. Recuerde que no se puede instanciar una interfaz.

Definicin de una interfaz


+ Los mtodos de una interfaz NO deben ser estticos. + Debido a que los mtodos de una interfaz son abstractos, NO deben ser marcados finales. + Una interfaz puede extender una o ms interfaces. + Una interfaz no puede extender (heredar) nada que no sea una interfaz. + Una interfaz se define con la palabra interface. + Las interfaces pueden ser usadas polimrficamente.

Definicin de una interfaz


De los mtodos solo se especifica su prototipo mas no su implementacin. Sintaxis:

Todo mtodo es implcitamente public abstract no se implementa

Atributos son implicitamente public static final y deben inicializarse

Ejemplo de definicin de una interfaz

Uso de una interfaz

Cuando una clase utiliza una interfaz decimos que dicha clase implementa la interfaz y utilizamos la palabra clave implements Una clase que implementa una interfaz debe implementar todos los mtodos declarados en la interfaz Si una clase implementa una interfaz y no define todos sus mtodos esta debe ser declarada como abstracta.

Uso de una interfaz

Uso de una interfaz

Cualquier instancia de una clase que implemente una interfaz puede ser referenciada por una variable del tipo de la interfaz. (Polimorfismo)

La variable de tipo interfaz solo tendr acceso a los miembros del objeto que se encuentre definidos en la interfaz y no al resto de elementos definidos dentro de la clase.

!!! No se pueden crear objetos a partir de una interfaz

Uso de una interfaz

Uso de una interfaz

Qu es polimorfismo?

El polimorfismo indica que una variable pasada o esperada puede adoptar mltiples formas. Es la habilidad de una variable de un determinado tipo para hacer referencia a objetos de diferentes tipos y llamar automticamente a los mtodos del tipo especfico del objeto al que hace referencia.

Seleccin dinmica de mtodo o Enlace Dinmico

Ventajas del enlace dinmico

La sobreescritura de mtodos permite a Java admitir el polimorfismo en tiempo de ejecucin. El polimorfismo es esencial en la Programacin Orienta a Objetos Permite que una clase general especifique mtodos que sern comunes a todas sus clases derivadas, permitiendo a stas definir la implementacin especfica de alguno de estos mtodos.

Enlace Dinmico
class A { void llamame() { System.out.println("Llama al metodo \"llamame\" de la clase A"); } }

class B extends A { void llamame() { System.out.println("Llama al metodo \"llamame\" de la clase B"); } }

Enlace Dinmico
class C extends A { void llamame() { System.out.println("Llama al metodo \"llamame\" de la clase C"); } }

Enlace Dinmico
class SeleccionDinamica { public static void main(String args[]) { A a = new A(); B b = new B(); C c = new C(); A r; //Polimorfismo y enlace dinmico r = a; r.llamame(); //Polimorfismo y enlace dinmico r = b; r.llamame(); //Polimorfismo y enlace dinmico r = c; r.llamame(); } }

Enlace Dinmico

Enlace Dinmico

Enlace Dinmico

Enlace Dinmico