MODIFICADOR STATIC

ebrodard
22 de Marzo del 2006
Hola,

Me gustaria saber la razon por la que en una clase si declaro un tipo String y lo utilizo en el main...me dice que no se puede hacer una referencia estatica a un campo no estatico.
Muchas gracias.

chuidiang
22 de Marzo del 2006
Hola:

Si tu haces

class MiClase
{
public String campo;
}

campo es un atributo de MiClase. No existe hasta que instancies MiClase, por lo que no puedes usarlo mientras que no hagas un new de MiClase.

Si haces ahora esto

MiClase a = new MiClase();
MiClase b = new MiClase();

tienes dos instancias y hay dos campos, un a.campo y un a.campo. No puedes referenciar a campo con MiCampo.campo porque no se sabe a cual quieres referenciar.

Por todo esto, dentro del main() no puedes acceder a campo, salvo que hagas un new de tu clase y la accedas a traves de la variable concreta.

Si le pones static asi

class MiClase
{
public static String campo;
}

Ese atributo campo existe desde el principio, sin necesidad de hacer new, y es comun a todas las instancias de la clase. En

MiClase.campo
MiClase a = new MiClase();
MiClase b = new MiClase();
a.campo;
b.campo;

todos los campo son el mismo. Si modificas uno, modificas el de todos. Declarándolo así sí puedes acceder desde el main() sin necesidad de hacer ningún new.

Se bueno