Módulo 3: Métodos

    2. Públicos, Privados, Protegidos y Estáticos

Un método puede ser declarado como 

public. Cualquier objeto de otra clase puede utilizar el método sobre un objeto de esta clase.

Ejemplos:

          g.drawString(" Hola ", 100, 100);

         t.setText("");

        p.paint(g);

private. Solo un elemento de la clase lo puede utilizar al método.

protected. Solo elementos de la clase o los descendientes (por herencia) pueden utilizar este método.

static. La unica manera de acceder al método es a través de utilizar la clase y no ningún objeto de ella, un ejemplo del uso de este método es el Integer.parseInt( t.getText() );  que hemos usado anteriormente, el método parseInt es declarado como static dentro de la clase Integer, pues su servicio no esta supeditado a un objeto, esta clausula static puede ir combinada con public o private o protected.

A continuación utilizaremos la clase Cuenta que representará una cuenta bancaria, dicha clase manejará una sola variable de instancia que se referirá al saldo y entonces tendremos la siguiente clase:

public class Cuenta {

   private double saldo; // variable para manejar el saldo

   public Punto() { // metodo para construir una cuenta vacia

      saldo = 0.0;

   }

 

   public Punto(double saldo) { // método para construir una cuenta con un saldo inicial

      this.saldo = saldo;

   }

 

   public double getSaldo() { // método que te dá el saldo de una cuenta

      return x;

   }

   public void setSaldo(double saldo) { // método que sirve para cambiar el valor del saldo

      this.saldo = saldo; // this se utiliza porque se esta utilizando (saldo) como parámetro y como 

                          // variable de instancia y esto es para que no se confunda

   }

}

En esta clase estamos utilizando todos los métodos como públicos, ya que nos interesaría que desde cualquier applet se pudieran crear objetos de la clase Cuenta, simplemente definiendo algun objeto y creandolo con algúno de los constructores, por ejemplo:

       Cuenta juan = new Cuenta();

      Cuenta pedro = new Cuenta(1500.00);

Ambas instrucciones crean objetos de la clase Cuenta, el objeto juan tiene un saldo en ceros, pero el objeto pedro tiene un saldo con 1500.

Ahora haremos uso de un método privado que en realidad no tiene sentido, pero para ejemplificar el uso de esto, con la siguiente definición de clase:

public class Cuenta {

   private double saldo; // variable para manejar el saldo

   public Punto() { // metodo para construir una cuenta vacia

      saldo = 0.0;

   }

 

   public Punto(double saldo) { // método para construir una cuenta con un saldo inicial

      this.saldo = saldo;

   }

 

   public double getSaldo() { // método que te dá el saldo de una cuenta

      return x;

   }

 

   private void conCero() {  // metodo privado para poner a cero el saldo

      saldo = 0.0;

   }

   

   public void setSaldo(double saldo) { // método que sirve para cambiar el valor del saldo

      conCero();

      this.saldo = saldo; // this se utiliza porque se esta utilizando (saldo) como parámetro y como 

                          // variable de instancia y esto es para que no se confunda

   }

}

El método privado conCero() pone en cero el saldo que se tiene, pero en realidad no se necesita, pues el método setSaldo() que es quien lo llama, esta cambiando el valor del saldo, pero aqui lo que queremos hacer ver es que si hicieramos algun uso de este método como por ejemplo:

      Cuenta juan = new Cuenta(700.00);

      juan.conCero();

Esto nos daria un error, pues el método conCero() es privado y no hay manera de utilizarlo, sino solamente desde la clase, como se esta haciendo.

Un ejemplo de un método estático sería cuando necesitamos hacer uso de este método solo a través del nombre de la clase y no a través de ningún objeto.

Haremos un método que nos regrese un String (cadena de caracteres), cuando se utilizado el método, por ejemplo:

public class Cuenta {

   private double saldo; // variable para manejar el saldo

   public Punto() { // metodo para construir una cuenta vacia

      saldo = 0.0;

   }

 

   public Punto(double saldo) { // método para construir una cuenta con un saldo inicial

      this.saldo = saldo;

   }

 

   public double getSaldo() { // método que te dá el saldo de una cuenta

      return x;

   }

 

   private void conCero() {  // metodo privado para poner a cero el saldo

      saldo = 0.0;

   }

   

   public static String mensaje() {    // solo para enseñar el uso del método estático

       return "Uso del método estático";

   }

 

   public void setSaldo(double saldo) { // método que sirve para cambiar el valor del saldo

      conCero();

      this.saldo = saldo; // this se utiliza porque se esta utilizando (saldo) como parámetro y como 

                          // variable de instancia y esto es para que no se confunda

   }

}

En este caso el método mensaje que es público y estático, puede ser utilizado desde fuera de la clase y no es necesario que sea referenciado por algun objeto, sino con el nombre de la clase, por ejemplo:

        Cuenta   pedro = new Cuenta(1500.00);

        t.setText("El mensaje estático es = " + Cuenta.mensaje() );

De esta manera al hacer uso del método mensaje regresará el mensaje definido en la clase.

 

Ejercicio
1. Crea la clase Alumno que contenga el nombre del alumno y su saldo. Esta clase debe contener dos métodos constructores, uno sin parámetros que llene a espacios el nombre y en ceros el saldo, y el otro que tome los valores como parámetros y los construya asi. Crea los dos métodos de acceso y los dos métodos de modificación correspondientes a cada una de las variables de instancia. Escribe el método toString() que regrese el nombre y el saldo del alumno separados por un espacio. Crea un método privado que recibe un entero como parámetro, dicho método pone en cero el saldo del alumno si el parámetro es un 1 y pone en blanco el nombre del alumno si el parámetro es un 2; dicho método privado deberá ser llamado desde cada método que modifica el valor del nombre y el que modifica el valor del saldo. Por último crea un método estático que despliegue el mensaje "Alumnos de Computación".

2. Haz un applet que cree objetos de la clase Alumno y utilice todos los métodos y lo muestre en el applet, usa tu imaginación para esto.

Ligas sugeridas
http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html

Regresar                                                                                                                                                                       Siguiente