none
variables de tipo por valor en static. RRS feed

  • Pregunta

  • Hola.

    Mirando la teoría de lo que es "static", decía que se usaba para no tener que crear una instancia nueva de una clase, de esta forma, al llamar a la variable se hacía directamente por el nombre de la clase y no por el nuevo objeto(instancia) creada.

    Entonces, supuse que esto se puede usar para variables de tipo referencia (se crean con clases), sin embargo, me encuentro que cuando declaro una variable de tipo valor (ej: integer,double,etc..) a veces también tengo que ponerla como static.

    Sinó luego dice esto:

    Se requiere una referencia de objeto para el campo, método o propiedad no estáticos 

    Porqué hay que ponerlas en static las variables de valor si no podemos crear instancias con ellas?

    Gracias.




    • Editado joantopo viernes, 7 de febrero de 2014 11:03
    viernes, 7 de febrero de 2014 11:00

Respuestas

  • imagino que si tengo un método en static en una clase y quiero usar variables que pertenecen a otra clase,estas variables tendrán que ser static para ser usadas en el método

    si asi es

    Tengo una clase llamada "variables_globales" (que no es static) y ahí voy poniendo todas las variables

    pero sino son estatic deberias instanciar esa clase para poder usar esas variables globales


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta joantopo viernes, 7 de febrero de 2014 12:12
    viernes, 7 de febrero de 2014 11:47

Todas las respuestas

  • Mirando la teoría de lo que es "static", decía que se usaba para no tener que crear una instancia nueva de una clase

    si eso es verdad, si defines una clase como static no defines una instancia

    supuse que esto se puede usar para variables de tipo referencia (se crean con clases)

    no creo que tenga nada que ver los tipo de referencia

    Porqué hay que ponerlas en static las variables de valor si no podemos crear instancias con ellas?

    pero esas variables donde las defines ? ls pones a nivel de la clase

    public static Class1{

       public static int NombreVariable;

    }

    algo como eso defines ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 7 de febrero de 2014 11:15
  • Exacto.

    Tengo una clase llamada "variables_globales" (que no es static) y ahí voy poniendo todas las variables.

    He estado mirando el libro en el capítulo "Uso de datos y métodos static" y pone cosas como:

    -Un método static no tendrá acceso a ningún campo de instancia definido para la clase. Sólo podrá usar los campos también marcados como static.

    Además, Podrá sólo llamar a los métodos de la clase marcados como static; los no static(métodos de instancia) precisan de la creación previa de un objeto dese el que llamarlos.


    (imagino que si tengo un método en static en una clase y quiero usar variables que pertenecen a otra clase,estas variables tendrán que ser static para ser usadas en el método).



    • Editado joantopo viernes, 7 de febrero de 2014 11:30
    viernes, 7 de febrero de 2014 11:26
  • imagino que si tengo un método en static en una clase y quiero usar variables que pertenecen a otra clase,estas variables tendrán que ser static para ser usadas en el método

    si asi es

    Tengo una clase llamada "variables_globales" (que no es static) y ahí voy poniendo todas las variables

    pero sino son estatic deberias instanciar esa clase para poder usar esas variables globales


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta joantopo viernes, 7 de febrero de 2014 12:12
    viernes, 7 de febrero de 2014 11:47
  • La clase no tiene porqué ser static(una clase static hace sólo de contenedor) y en ese caso todos sus miembros tendrían que ser static.

    Lo importante es que las variables que pongo dentro de la clase(que las consideraré como variables globales(públicas), para no tener que instanciar su clase cada vez cuando quiero usarlas), las pongo como static, de esta manera cuando las tenga que llamar las llamo como "variables_globales.nombrevar"

    Quizá lo que me creaba confusión, es que las variables las tengo dentro de una clase pero la clase no define un objeto como tal, y no veía eso de hacer una instancia a una clase que no crea un objeto nuevo.

    Creo que ya lo he entendido todo, gracias.


    • Editado joantopo viernes, 7 de febrero de 2014 12:19
    viernes, 7 de febrero de 2014 12:12