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