polimorfismo

18
POLIMORFISMO UNIDAD 4

Upload: martiuni

Post on 18-Dec-2015

2 views

Category:

Documents


0 download

DESCRIPTION

uso del polimorfismo en java

TRANSCRIPT

  • POLIMORFISMOUNIDAD 4

  • POLIMORFISMOEl Polimorfismo es la respuesta distinta frente a una llamada a un mtodo dependiendo de la naturaleza del objeto. Consiste en definir mtodos distintos, que comparten el mismo nombre, pero que se aplican a clases diferentes

  • El polimorfismo es una de las principales aplicaciones de la herencia y supone el principal motivo de las clases abstractas.

  • VentajaLa principal ventaja del polimorfismo es la reutilizacion de codigo

  • Asignacion de objetos a variables de su super claseEn java, es posible asignar un objeto de una clase a una variable de su superclase.

    Por ejemplo, dada una variable de tipo FiguraFigura f;

    Es posible asignar a esta variable el objeto Triangulof =new Triangulo();

  • A partir de aqui, se puede utilizar la variable para invocar a aquellos metodos del objeto que tambien esten definidos o declarados en la superclase, pero no aquellos que solo existan en la clase a la que pertenece el objeto

  • Tras la conexin polimorfa nicamente podemos acceder a las operaciones pertenecientes a la clase asociada a la referencia.

    El resto de operaciones del objeto no son accesibles a travs de esta referencia

  • Variable polimorficaUna variable referencia es polimrfica cuando su tipo de declaracin no coincide con el tipo del objeto al que referencia:Figura f1 = new Figura(Estandar, Rojo);

    Figura f2 = new Circulo(Verde, 5.0); f2 variable polimorfica.

  • Clases abstractas: A menudo existen clases que sirven para definir un tipo genrico pero que no sentido instanciar (crear objetos de ella). Mtodos abstractos: Un mtodo abstracto significa que tiene que ser sobrescrito. No est implementado. Una clase con uno o varios mtodos abstractos tiene que ser declarada abstracta. No obstante una clase abstracta no tiene porque tener mtodos abstractos.

  • INTERFACES (herencia mltiple)Los interfaces en Java nos solucionan en parte la no existencia de la herencia mltiple.

    Los interfaces son un tipo de clase especial que no implementa ninguno de sus mtodos. Todos son abstractos. Por tanto no se pueden instanciar.

  • De los interfaces tambin se hereda, aunque se suele decir implementa. Y se realiza mediante la palabra: implements.Si una clase que hereda de un interface, no implementa todos los mtodos de este, deber ser definida como abstracta.

  • Para qu se utiliza?Para permitir la herencia mltiple (ya que la herencia en Java slo permite heredar de una sola clase)

  • Definen un comportamiento (o funcionalidad) genrico, ignorando los aspectos relacionados con su implementacin.Las interfaces que implementa una clase se comportan igual que las superclases en lo que respecta al uso del polimorfismo.

  • Subclase: Necesitemos hacer una especializacin de la superclase mediante sobre escritura o aadiendo nuevos mtodos.

    Clase abstracta: Queremos definir un grupo genrico de clases y adems se tiene algunos mtodos implementados que reutilizar.

  • Interface: Queremos definir un grupo genrico de clases y no tenemos mtodos implementados que reutilizar. O cuando nos veamos forzados por la falta de herencia mltiple en Java.

  • Interface vs. Clase AbstractaUn interface no puede implementar ningn mtodo. Un interface no forma parte de la jerarqua de clases.

  • Una clase puede implementar n interfaces pero solo una clase. El objetivo de un mtodo abstracto es forzar una interfaz (API) pero no una implementacin

  • Haremos un interface cuando queramos definir un grupo genrico de clases y no tengamos mtodos implementados que reutilizar. O cuando nos veamos forzados por la falta de herencia mltiple en Java.