jueves, 1 de agosto de 2013

Conceptos Básicos IV: Super()

  Hoy aprenderemos las palabra super, que significa esta palabra, lo que hace es que mientras se ejecuta el programa, se devuelve a la funcion heredada buscando el mismo metodo... (¿Qué cosa? no entendi nada)
pero si esta más que claro jajajaja, pues miremoslo con un ejemplo

##################  CLASE HEREDADA  ########################
class Heredo_lo_mio
  def initialize
 
  end
  def metodo_dos
    print "Estoy aca :DD"
  end
  def metodo_tres
   
  end
end
###########################################################

################  CLASES QUE USO AHORA ####################
class Ejemplo < Heredo_lo_mio
  def initialize
   
  end
  def metodo_dos
    print "que miras tu D:<"
  end
  def metodo_uno
    matriz = [300, 1234, 21, 4321, 5]
    print matriz.size
    matriz[matriz.size] = "miro"
    print matriz.size
  end
end
Mensaje=Ejemplo.new
Mensaje.metodo_dos


 Si vemos el mensaje tal cual esta y ejecutamos el programa, tendría que salir esto en la consola...


Sale esto, obviamente porque estamos llamando al final a la clase Ejemplo con una variable local donde Mensaje=Ejemplo.new y luego en esta clase buscamos el metodo metodo_dos, ejecutando lo que tiene dentro que seria el print "que miras tu D:<"

Veremos ahora lo que hacer el super, pondremos el super dentro del metodo metodo_dos, de esta manera

##################  CLASE HEREDADA  ########################
class Heredo_lo_mio
  def initialize
  
  end
  def metodo_dos
    print "Estoy aca :DD"
  end
  def metodo_tres
    
  end
end
###########################################################

################  CLASES QUE USO AHORA ####################
class Ejemplo < Heredo_lo_mio
  def initialize
    
  end
  def metodo_dos
    super()
    print "que miras tu D:<"
  end
  def metodo_uno
    matriz = [300, 1234, 21, 4321, 5]
    print matriz.size
    matriz[matriz.size] = "miro"
    print matriz.size
  end
end
Mensaje=Ejemplo.new
Mensaje.metodo_dos

   
    Lo que pasará ahora es que buscara el metodo metodo_dos, pero a diferencia del anterior se encuentra primero con un super() por lo que buscara en la clase heredada Heredo_lo_mio el mismo metodo metodo_dos, por lo que imprimira en la consola "estoy aqui :DD" y luego como no hay nada mas en ese metodo, se devuelve al metodo_dos original y continua su trabajo hasta terminar...

  Si a diferencia pongo super() en un metodo que no se encuentra en la clase heredada, tirara un error...

No hay comentarios:

Publicar un comentario