Atributos static

Mediante la palabra reservada static se declaran atributos de clase.

class persona {
    static int numpersonas=0; // atributo de clase
    String nombre; //atributo de objeto
    public persona (String n){
        nombre = n;
        numpersonas++;
    }
    public void muestra(){
        System.out.print("Soy "+nombre);
        System.out.println(" pero hay "+ (numpersonas-1) + " personas mas.");
    }
}

class Static {
    public static void main (String args[]){
        persona p1,p2,p3;
        // se crean 3 instancias del atributo nombre
        // solo se crea una instancia del atributo numpersonas
        p1 = new persona("Juan");
        p2 = new persona("Pedro");
        p3 = new persona("Susana");
        p2.muestra();
        p1.muestra();
    }
}

y devuelve por pantalla:

Soy Pedro pero hay 2 personas mas.
Soy Juan pero hay 2 personas mas.

En este caso, numpersonas es un atributo de clase y por lo tanto es compartido por todos los objetos que se crean a partir de la clase persona. Todos los objetos de esta clase pueden acceder al mismo atributo y manipularlo. El atributo nombre es un atributo de objeto y se crean tantas instancias como objetos se declaren del tipo persona. Cada variable declarada de tipo persona tiene un atributo nombre y cad objeto puede manipular su propio atributo de objeto.

En el ejemplo se crea un atributo numpersonas y 3 atributos nombre (tantos como objetos de tipo persona)

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options