title: I don't know how to deal with this java.lang.ClassCastException
body: <p>I have to do the following :</p>
  
  <p>The program is divided in the following classes:12. In our Arena class we have first defined a Fight (first round) between the Magician and the Strong Warrior. When this is over, we must create a normal Warrior from our Strong Warrior and he must fight against the magician (second round).</p>
  
  <p>It is important that we observe that having cast, our Warrior takes the life of the Strong Warrior, but his attacks are simple, without the extra points that Strong Warrior has. For practical purposes it is as if our Warrior had lost his strength for the second round.</p>
  
  <p><strong>Personaje</strong> </p>
  
  <pre><code>public abstract class Personaje {
      //attributes
      int vida ;
      //constructor
      Personaje() {
          vida=100;
      }
      //getters y setters
      public int getVida() {
          return vida;
      }
      public void setVida(int vida) {
          this.vida = vida;
      }
  
      //abstract method movimientoLucha
      public abstract int movimientoLucha();
  }
  </code></pre>
  
  <p><strong>Mago</strong> </p>
  
  <pre><code>public  class Mago extends Personaje {
      //attributes
      int magia;
      //Constructor of superclass
      Mago() {
  
      this.vida=vida+(int)(vida*0.1);
      Date fecha_creacion =new Date();
      GregorianCalendar calendario_creacion=new GregorianCalendar();
      calendario_creacion.setTime(fecha_creacion);
      System.out.println("La fecha de creacion del Mago Test1 es: "
                          +calendario_creacion.get(Calendar.DAY_OF_MONTH)+"/"
                          +calendario_creacion.get(Calendar.MONTH)+"/"
                          +calendario_creacion.get(Calendar.YEAR)+" a las "
                          +calendario_creacion.get(Calendar.HOUR)+":"
                          +calendario_creacion.get(Calendar.MINUTE)+":"
                          +calendario_creacion.get(Calendar.SECOND)+":"
                          +calendario_creacion.get(Calendar.MILLISECOND));
  
      }
      //Getters &amp; setters
      public int getMagia() {
          return magia;
      }
      public void setMagia(int magia) {
          this.magia = magia;
      }
      //Method
      public int movimientoLucha(){
          int movement=(int)(Math.random()*magia);
          System.out.println("****Hechizazo****");
          return movement;
      }
      public void setVida(int vida) {
          super.setVida(vida);
      }
      public int getVida() {
          return vida;
      }
  }
  </code></pre>
  
  <p><strong>Guerrero</strong> </p>
  
  <pre><code>package p1_t5;
  
  import java.util.Date;
  import java.util.GregorianCalendar;
  import java.util.Calendar;
  import java.text.DateFormat;
  
  public class Guerrero extends Personaje {
      //attributes
      int ataque=0;
      //constructor
      public Guerrero() {
          this.vida=vida;
          ataque=10;
          //Date construction
           Date fecha_creacion = new Date();
           GregorianCalendar calendario_creacion=new GregorianCalendar();
           calendario_creacion.setTime(fecha_creacion);
              System.out.println("La fecha de creacion del Guerrero Test2 es: "
                      +calendario_creacion.get(Calendar.DAY_OF_MONTH)+"/"
                      +calendario_creacion.get(Calendar.MONTH)+"/"
                      +calendario_creacion.get(Calendar.YEAR)+" a las "
                      +calendario_creacion.get(Calendar.HOUR)+":"
                      +calendario_creacion.get(Calendar.MINUTE)+":"
                      +calendario_creacion.get(Calendar.SECOND)+":"
                      +calendario_creacion.get(Calendar.MILLISECOND));
  
      }
  
      //getters y setters
      public int getAtaque() {
          return ataque;
      }
  
      public void setAtaque(int ataque) {
          this.ataque = ataque;
      }
      //method
      public int movimientoLucha(){
          int movement=(int)(Math.random()*ataque);
          System.out.println("****Espadazo****");
          return movement;
      }
  }
  </code></pre>
  
  <p><strong>GuerreroFuerte</strong> </p>
  
  <pre><code>package p1_t5;
  
  import java.util.Date;
  import java.util.GregorianCalendar;
  import java.util.Calendar;
  import java.text.DateFormat;
  
  
  
  public class GuerreroFuerte extends Guerrero {
      GuerreroFuerte()
      {
          this.vida=vida;
          this.ataque=ataque;
          //Date construction
          Date fecha_creacion=new Date();
          GregorianCalendar calendario_creacion=new GregorianCalendar();
          calendario_creacion.setTime(fecha_creacion);
          System.out.println("La fecha de creacion del Guerrero Fuerte SuperAnaquin es: "
                              +calendario_creacion.get(Calendar.DAY_OF_MONTH)+"/"
                              +calendario_creacion.get(Calendar.MONTH)+"/"
                              +calendario_creacion.get(Calendar.YEAR)+" a las "
                              +calendario_creacion.get(Calendar.HOUR)+":"
                              +calendario_creacion.get(Calendar.MINUTE)+":"
                              +calendario_creacion.get(Calendar.SECOND)+":"
                              +calendario_creacion.get(Calendar.MILLISECOND));
      }
      //Method
      public int movimientolucha(){
          int movement=((int)(Math.random()*ataque)+5);
          System.out.println("****Espadazooooo super fuerte****");
          return movement;
      }
  }
  </code></pre>
  
  <p><strong>GuerreroNormal</strong> </p>
  
  <pre><code>package p1_t5;
  
  import java.util.Date;
  import java.util.GregorianCalendar;
  import java.util.Calendar;
  import java.text.DateFormat;
  
  public class GuerreroNormal extends GuerreroFuerte {
      GuerreroNormal()
      {
          this.vida=vida;
          this.ataque=ataque;
  
          Date fecha_creacion=new Date();
          GregorianCalendar calendario_creacion=new GregorianCalendar();
          calendario_creacion.setTime(fecha_creacion);
          System.out.println("La fecha de creacion del Guerrero Normal Anaquinino es: "
                              +calendario_creacion.get(Calendar.DAY_OF_MONTH)+"/"
                              +calendario_creacion.get(Calendar.MONTH)+"/"
                              +calendario_creacion.get(Calendar.YEAR)+" a las "
                              +calendario_creacion.get(Calendar.HOUR)+":"
                              +calendario_creacion.get(Calendar.MINUTE)+":"
                              +calendario_creacion.get(Calendar.SECOND)+":"
                              +calendario_creacion.get(Calendar.MILLISECOND));
      }
  
  }
  </code></pre>
  
  <p><strong>Arena</strong> </p>
  
  <pre><code>package p1_t5;
  
  import java.util.Scanner;
  
  public class Arena {
      //Creation of method Lucha 
      public static void Lucha(Guerrero Test1, Mago Test2, int danoValor, Integer danoReferencia) {
          System.out.println(Test1.movimientoLucha());
          int dañoMago=Test2.getVida()-Test1.movimientoLucha();
          System.out.println("La vida del Mago Test1 se ha reducido a : "+dañoMago);
          System.out.println(Test1.movimientoLucha());
          int dañoGuerrero=Test1.getVida()-Test2.movimientoLucha();
          System.out.println("La vida del Guerrero Test2 se ha reducido a: "+dañoGuerrero);
          danoValor=Test1.movimientoLucha()+Test2.movimientoLucha();
          System.out.println("El daño acumulado por valor es: "+danoValor);
          danoReferencia=Test1.movimientoLucha()+Test2.movimientoLucha();
          System.out.println("El daño acumulado por referencia es: "+danoReferencia);
      }
  
      //Creation of method Lucha first round
      public static void Lucha(GuerreroFuerte BigTest1, Mago Test2, int danoValor, Integer danoReferencia){
          System.out.println(BigTest1.movimientoLucha());
          int dañoMago=Test2.getVida()-BigTest1.movimientoLucha();
          System.out.println("La vida del Mago Test1 en la primera ronda se ha reducido a : "+dañoMago);
          System.out.println(BigTest1.movimientoLucha());
          int dañoGuerrero=BigTest1.getVida()-Test2.movimientoLucha();
          System.out.println("La vida del GuerreroFuerte BigTest1 en la primera ronda se ha reducido a: "+dañoGuerrero);
          danoValor=BigTest1.movimientoLucha()+Test2.movimientoLucha();
          System.out.println("El daño acumulado en la primera ronda por valor es: "+danoValor);
          danoReferencia=BigTest1.movimientoLucha()+Test2.movimientoLucha();
          System.out.println("El daño acumulado en la primera ronda por referencia es: "+danoReferencia);
      }
  
      //Creation of method Lucha second round 
      public static void Lucha(GuerreroNormal Prueba2, Mago Test2, int danoValor, Integer danoReferencia){
          System.out.println(Prueba2.movimientoLucha());
          int dañoMago=Test2.getVida()-Prueba2.movimientoLucha();
          System.out.println("La vida del Mago Test2 en la segunda ronda se ha reducido a : "+dañoMago);
          System.out.println(Prueba2.movimientoLucha());
          int dañoGuerrero=Prueba2.getVida()-Test2.movimientoLucha();
          System.out.println("La vida del Guerrero Anaquinino en la segunda ronda  se ha reducido a: "+dañoGuerrero);
          danoValor=Prueba2.movimientoLucha()+Test2.movimientoLucha();
          System.out.println("El daño acumulado en la segunda ronda por valor es: "+danoValor);
          danoReferencia=Prueba2.movimientoLucha()+Test2.movimientoLucha();
          System.out.println("El daño acumulado en la segunda ronda por referencia es: "+danoReferencia);
          System.out.println("La vida del Mago Test2 en un 10 por ciento mayor: "+Test2.getVida());
      }
  
      public static void main(String[] args) {
          // TODO Auto-generated method stub
          Scanner Entrada=new Scanner(System.in);
          //Inizialization of variables 
          int vida=200;
          int ataque=800;
          //7.Creation of two variables danoValor &amp; wrapper danoReferencia
          int danoValor=0;
          Integer danoReferencia=0;
          //Creation of a warrior 
          final Guerrero Test1=new Guerrero();
          System.out.println("El nivel de vida del guerrero es "+Test1.getVida());
          System.out.println(Test1.movimientoLucha());
          //Creation of a Magician
          final Mago Test2=new Mago();
          System.out.println("El nivel de vida del mago es "+Test2.getVida());
          System.out.println(Test2.movimientoLucha());
          //Call the method
          Lucha(Test1, Test2,danoValor,danoReferencia);
          //Creation of a new Guerrero Fuerte
          GuerreroFuerte BigTest1=new GuerreroFuerte();
          Lucha(BigTest1,Test2, danoValor, danoReferencia);
          GuerreroNormal Prueba2=new GuerreroNormal();
          Prueba2=(GuerreroNormal)BigTest1;
          Lucha (Prueba2, Test2, danoValor, danoReferencia);
  
      }
  }
  </code></pre>