Magic Space

Magic Space

viernes, 20 de julio de 2018

Polimorfismo

Es la propiedad que tienen los objetos de permitir invocar genéricamente un comportamiento (método) cuya implementación será delegada al obejto correspondiente recien en tiempo de ejecución. En otras palabras es la combinación de herencia con colecciones.

Polimorfismo significa muchas formas. Es por eso que como se heredan diferentes tipos de clases cada una tiene diferentes tipos de objetos.
Ejemplo:

package polimorfismo;

import java.util.ArrayList;
import java.util.List;

public class Polimorfismo {
        public static String marca;
         public static String modelo;
          public static double precio;

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        //Tomar objetos de la clase autobus y vehiculo
        int asientos;
        int puertas;
        int opc;
        List<Vehiculo>vehiculos=new ArrayList<Vehiculo>();//No se puede aplicar new en interfaces como
        do{
            System.out.println("1.- Ingrese Autobus");
            System.out.println("2.- Ingrese Turismo");
            System.out.println("3.- Imprimir Vehiculos");
            System.out.println("4.- Salir");
            opc=LecturaScan.leerInt("Ingrese una opcion:");
            switch(opc){
                case 1:
                {
                leerDatos();
                asientos=LecturaScan.leerInt("Ingrese número de asientos");
                vehiculos.add(new Autobus(marca,modelo,precio,asientos));
                }break;
                 case 2:
                {
                leerDatos();
                puertas=LecturaScan.leerInt("Ingrese número de puertas");
                vehiculos.add(new Turismo(marca,modelo,precio,puertas));
                }break;
                 case 3:
                {
                    imprimir((ArrayList)vehiculos);
                    imprimirSinCasting((ArrayList<Vehiculo>)vehiculos);
                   
                }break;
            }
        }while(opc!=4);
       
    }
   
        public static void leerDatos()
    {
        marca=LecturaScan.leerString("Ingrese la marca:");
        modelo=LecturaScan.leerString("Ingrese el modelo:");
        precio=LecturaScan.leerDouble("Ingrese el precio:");       
    }
    public static void imprimir(ArrayList lista){
        for(int i=0;i<lista.size();i++)
        {
            if (lista.get(i) instanceof Autobus){
                Autobus a= (Autobus)lista.get(i);
                System.out.println("Tipo"+a.tipo());
                a.imprimirAtributos();
            }
            if(lista.get(i) instanceof Turismo){
               Turismo a=(Turismo)lista.get(i);
               System.out.println("Tipo: "+a.tipo());
               a.imprimirAtributos();
         
//Cuando necesito llamar un metodo que no esta en el papa pregunta
            }
               
                //Autobus at=(Autobus)lista.get(i);
            /*Vehiculo ve=(Vehiculo)lista.get(i);
            if(ve instanceof Autobus)
            //lista.get(i).(Vehiculo)lista.get(i);
            System.out.println("Tipo:"+ve.);//consultar getclass
            ve.imprimirAtributos();*/
        }
    }
    public static void imprimirSinCasting(ArrayList<Vehiculo>lista)
    {
        for(int i=0;i<lista.size();i++)
        {
            lista.get(i).imprimirAtributos();//Revisar todas las formas de recorrer colecciones
        }
    }    //size metodo que estan en las listas y lenght es una propiedad que tienen los arraylists
    }
   





No hay comentarios:

Publicar un comentario