Mi primer artículo colaborando en el blog, y se preguntarán “¿por qué este tema?”, sencillamente porque quería compartirles algo que depende del conocimiento de éstos tipos de métodos, que no son propios de java, pues son sobre todo una “buena costumbre” en la programación orientada a objetos en varios lenguajes, y además son parte de la especificación de JavaBeans.
La razón de crear estos métodos, es debido a que habitualmente se recomienda que los campos (o propiedades) de una clase sean de acceso privado, es decir, únicamente desde el interior de la clase, y que para accesar o modificar estos valores, se utilicen métodos públicos diseñados para esa tarea. Estos son los denominados setters (set – modificar) y getters (get – accesar).
Pongamos un ejemplo sencillo, suponiendo que debemos representar a una persona en un objeto, la persona tendrá como datos “nombre, direccion, y teléfono”. Crearemos entonces la clase y esos 3 campos, los cuales serán de acceso privado, y crearemos los 3 métodos setters y los 3 métodos getters para poder accesarlos y/o modificarlos.
El código java para la clase ser vería como el siguiente:
/**
* Clase que representa a un persona
* @author mariodlg
*/
public class Persona{
private String nombre;
private String direccion;
private int telefono;
/**
* Constructor vacio
*/
public Persona(){
}
public void setNombre(String nombre){
this.nombre = nombre;
}
public String getNombre(){
return nombre;
}
public void setDireccion(String direccion){
this.direccion = direccion;
}
public String getDireccion(){
return direccion;
}
public void setTelefono(int telefono){
this.telefono = telefono;
}
public int getTelefono(){
return telefono;
}
}
Se puede apreciar que los campos nombre, direccion y telefono son de acceso privado. Los métodos setNombre, setDireccion y setTelefono, son los setters para dichos campos, los cuales reciben como parámetro el nuevo valor y lo asignan a la propiedad. Algo que tienen en común éstos métodos es que son de tipo void, lo que quiere decir que no retornan ningun dato, ya que sólo sirven para modificar la propiedad, asignando el valor recibido en el parámetro. Los métodos getNombre, getDireccion y getTelefono, son los métodos getters, y nos dan acceso al valor actual de la propiedad, al retornarnos su dato almacenado. Estos 3 métodos si poseen un tipo de datos de retorno, el cual depende del tipo de la propiedad que están retornando. Tanto los setters como los getters son métodos de acceso público y nos dan la posibilidad de accesar y modificar los campos privados de la clase.
Una observación que vale la pena hacerse notar es que, si bien el campo nombre es en minúsculas, el método setNombre lleva la N en mayúscula, como una regla que aplica en la creación de este tipo de métodos, misma que es aplicada en otros lenguajes, no solo en java.
Por último, indicar que los métodos setters están recibiendo un parámetro con el mismo nombre del campo de la clase, pero que por estar definido dentro del método, su alcance (scope) se limita dentro del mismo. Para hacer que nuestra propiedad tome el valor que deseamos, es necesario indicarle a java que accese al campo y no al parámetro, mediante el operador “this“, de tal forma que “nombre” no es la misma variable que “this.nombre“, el primero es el parámetro, y el segundo es el campo de la clase. De esta forma se traslada el valor recibido por el método público hacia el campo privado.
Con esto aclarado, puedo pasar al siguiente tema, pronto. ![]()
Un cordial saludo!


#1 by Mario on 10/Abr/2010
Excelente Información!!!, lo que le falta un poco sería hablar del por que del void, tal como que va aparecer al ejecutar el programa, para una comprensión total en general del código.
#2 by mariodlg on 11/Abr/2010
Gracias por tu comentario, he ampliado la descripción de los métodos setters para incluir tus sugerencias. En este punto la clase no hace nada, es decir, sólo almacena información referente a una persona. Eso es lo interesante de la programación por objetos y de su implementación a través de este gran lenguaje. Según nuestras necesidades, esta clase se puede usar de mil formas, y complementarla agregándole nuevos métodos, para incluirle más funcionalidad.
Un saludo!
#3 by Maria F. Felizzola A. on 22/Abr/2010
!Exelene informacion !es clara y concisa .Te felicito!
#4 by mariodlg on 22/Abr/2010
Muchas gracias, me alegra que te haya servido!
Saludos cordiales!
#5 by vero on 24/Abr/2010
muy buena explicacion. gracias
#6 by mariodlg on 24/Abr/2010
Es un gusto saber que te fué de utilidad el artículo.
Saludos!
#7 by ari_inform on 8/May/2010
Y como seria en este caso?
public void setFecha(int dia, inte mes, int año) throws Exception
#8 by mariodlg on 4/Jun/2010
Si entendí bien tu pregunta, pensaría que tienes un campo privado de tipo fecha, y con los 3 parámetros recibidos debes crear un campo tipo fecha (date) y asignarlo, como cualquier otro Setter. En el setter puedes meter cualquier código, comúnmente validaciones que impiden asignar datos incorrectos a nuestro campo privado.
Saludos!
#9 by Miltin on 14/May/2010
Oye super bien estaba buscando una informacion concisa como esta!
muchas gracias.
Milton Marino Vasquez
CS student from UOP.
#10 by mariodlg on 4/Jun/2010
Excelente, espero colaborar pronto con más contenido.
Saludos.
#11 by Ale on 19/Jun/2010
hola muy buena la explicacion…ademas me viene como anillo al dedo el ejemplo y todo..muchas gracias..!!
#12 by mariodlg on 22/Jun/2010
Con gusto, es bueno saber que te ha sido de utilidad.
Saludos!
#13 by Carlos on 26/Jul/2010
Bueno tu aporte, muchas gracias.