2011-06-02 23 views
11

Me preguntaba qué sucedería si definiera un objeto de actividad base con todas mis actividades como subclases de eso. Luego declaro una variable estática en la clase base, todas las subclases usarán la MISMA estática o habrá una por subclase.Variable estática en varias subclases diferentes corregidas

Por ejemplo. Mi clase base:

public class MyBaseActivity extends Activity{ 

    static int myStatic; 

    ... 
    .... 

} 

continuación:

public class MyActivity1 extends MyBaseActivity { 


    private void someMethod1(){ 
     myStatic = 1; 
    } 

    ... 
    .... 

} 

y

public class MyActivity1 extends MyBaseActivity { 

    private void someMethod2(){ 
      if (myStatic == 1) 
      doSomething(); 
    } 

    ... 
    .... 

} 

Si ahora empiezo MyActivity1 y se establece un valor de "myStatic". A continuación, se cierra y luego inicio MyActivity2. ¿Debo seguir teniendo el valor establecido por la primera actividad? En el ejemplo anterior, ¿la afirmación "if" sería verdadera o falsa?

Sé que si instanciara Activity1 más de una vez, obviamente obtendría la misma variable estática. Sin embargo, aquí estoy instanciando una subclase diferente cada vez.

Me da la impresión de que eso es lo que me está sucediendo, pero quiero estar seguro.

Respuesta

11

Static is static. Ellos harán referencia al mismo objeto.

4

Si ahora comienzo MyActivity1 y establece un valor en "myStatic". Luego sale de y luego inicio MyActivity2 - debería ¿Todavía tengo el valor establecido por la primera actividad de ? En el ejemplo anterior, ¿la afirmación "if" sería verdadera o falsa?

Todas las subclases compartirán la misma instancia de clase static. por lo que la instrucción if es verdadera

5

Las variables estáticas pertenecen al objeto Clase, no a las instancias. Solo hay un objeto Class (para esa clase), por lo que solo hay una instancia de la variable estática, por lo que "sí, todos ven la misma variable".

Las subclases tienen visibilidad de la variable si está protegida o es pública.

Cuestiones relacionadas