Capítulo 4
Trabajando con clases y objetos en Java

Variables y métodos de clase

  • Variables de clase

    Las variables de clase son variables cuyos valores son los mismos para la clase y para todas sus instancias.

    Para indicar que una variable es una variable de clase se utiliza la palabra clave static en la declaración de la variables:

    static tipoVariable nombreVariable;
    
  • Métodos de clase

    Los métodos de clase al igual que las variables de clase, se aplican a la clase como un todo y no a sus instancias.

    Se utiliza de igual manera la palabra clave static para indicar que un método es un método de clase:

    static valorRetorno nombreMetodo( <lista argumentos opcionales> )
    {
         /* cuerpo del método */
    }
    
Para acceder a las variables o métodos de clase se utiliza el mismo operador punto ( . ).

Aunque se puede acceder a las variables y métodos de clase a través de un objeto, está permitido y se recomienda utilizar mejor el nombre de la clase,
   /* Utilizar esto */
   nombreClase.nombreVarClase;
   nombreClase.nombreMetodoClase();

   /* en lugar de esto */
   nombreObjeto.nombreVarClase;
   nombreObjeto.nombreMetodoClase();

Ejemplo

/* Usuario3.java */

class Usuario3
{
     static char MAS = 'm';
     static char FEM = 'f';

     String nombre;
     int edad;
     String direccion;
     char sexo;

     Usuario3( )
     {
        nombre = null;
        edad = 0;
        direccion = null;
        sexo = '\0';
     }

     Usuario3(String nombre, int edad, String direccion,char sexo)
     {
        this.nombre = nombre;
        this.edad = edad;
        this.direccion = direccion;
        this.sexo = sexo;
     }

     Usuario3(Usuario3 usr)
     {
        nombre = usr.getNombre();
        edad = usr.getEdad();
        direccion = usr.getDireccion();
        sexo = usr.getSexo();
     }

     void setNombre(String n)
     {
        nombre = n;
     }

     String getNombre( )
     {
        return nombre;
     }

     void setEdad(int e)
     {
        edad = e;
     }

     int getEdad()
     {
        return edad;
     }

     void setDireccion(String d)
     {
        direccion = d;
     }

     String getDireccion( )
     {
        return direccion;
     }

     void setSexo(char s)
     {
        sexo = s;
     }

     char getSexo( )
     {
        return sexo;
     }

     public String toString()
     {
        return nombre;
     }
}

/* ProgUsuario3.java */

class ProgUsuario3
{
   static int NUM_USUARIOS = 0;
   static java.util.Vector usuarios = new java.util.Vector();

   String nombreObj = null;

   ProgUsuario3(String nombre)
   {
     this.nombreObj = nombre;
   }

   static int getNumUsuarios()
   {
     return NUM_USUARIOS;
   }

   static void imprimeUsuario(Usuario3 usr)
   {
      System.out.println("\nNombre: " + usr.nombre );
      System.out.println("Edad: " + usr.getEdad() );
      System.out.println("Sexo: " + usr.getSexo() );
      System.out.println("Direccion: " + usr.getDireccion() );
   }

   void addUsuario(Usuario3 usr)
   {
      usuarios.addElement(usr);
      System.out.print(usr.toString( )+ " agregado por el "+ this.toString() +",");
      NUM_USUARIOS ++;
   }

   void delUsuario(Usuario3 usr)
   {
      boolean b = usuarios.removeElement(usr);
      if( b == true )
      {
         NUM_USUARIOS--;
         System.out.print(usr.toString( )+ " eliminado por el "+ this.toString() +",");
      }
      else System.out.println("No se pudo eliminar al usuario.");
   }

   public String toString()
   {
      return nombreObj;
   }

   public static void main(String args[])
   {
      ProgUsuario3 obj1 = new ProgUsuario3("objeto1");
      ProgUsuario3 obj2 = new ProgUsuario3("objeto2");

      Usuario3 usr1,usr2,usr3,usr4;

      usr1 = new Usuario3( );
      usr2 = new Usuario3("Usuario B",24,"La direccion A",Usuario3.FEM);
      usr1 = new Usuario3(usr2);
      usr1.setNombre("Usuario A");
      usr3 = new Usuario3("Usuario C",35,"La direccion C",Usuario3.MAS);
      usr4 = new Usuario3("Usuario D",15,"La direccion D",Usuario3.MAS);

      obj1.addUsuario(usr1);
      System.out.println( "\t Total: " +ProgUsuario3.getNumUsuarios() );
      obj2.addUsuario(usr2);
      System.out.println( "\t Total: " +obj1.getNumUsuarios() );
      obj1.addUsuario(usr3);
      System.out.println( "\t Total: " +ProgUsuario3.NUM_USUARIOS );
      obj2.addUsuario(usr4);
      System.out.println( "\t Total: " +getNumUsuarios() +"\n");

      obj2.delUsuario(usr4);
      System.out.println( "\t Total: " +ProgUsuario3.getNumUsuarios() );
      obj1.delUsuario(usr3);
      System.out.println( "\t Total: " +obj1.getNumUsuarios() );
      obj2.delUsuario(usr2);
      System.out.println( "\t Total: " +ProgUsuario3.NUM_USUARIOS );
      obj1.delUsuario(usr1);
      System.out.println( "\t Total: " +getNumUsuarios() +"\n");
   }
}
«Indice»     «Anterior»     « Siguiente »