En la escuela, me han dicho muchas veces que deje de usar public
para mis variables. No he preguntado por qué todavía.
Esta pregunta: ¿Los campos públicos de Java son solo un defecto de diseño histórico trágico en este punto? parece estar relacionado con esto. Sin embargo, parece que no discuten por qué está "mal", sino que se centran en cómo pueden usarlos en su lugar.
Mira esta clase (sin terminar):
public class Reporte {
public String rutaOriginal;
public String rutaNueva;
public int bytesOriginales;
public int bytesFinales;
public float ganancia;
/**
* Constructor para objetos de la clase Reporte
*/
public Reporte() {
}
}
No hay necesidad de entender el español. Todo lo que hace esta clase es mantener algunas estadísticas (esos campos públicos) y luego hacer algunas operaciones con ellos (más adelante).
También necesitaré modificar esas variables a menudo. Pero bueno, ya que me han dicho que no use public
, esto es lo que terminé haciendo:
public class Reporte {
private String rutaOriginal;
private String rutaNueva;
private int bytesOriginales;
private int bytesFinales;
private float ganancia;
/**
* Constructor para objetos de la clase Reporte
*/
public Reporte() {
}
public String getRutaOriginal() {
return rutaOriginal;
}
public String getRutaNueva() {
return rutaNueva;
}
public int getBytesOriginales() {
return bytesOriginales;
}
public int getBytesFinales() {
return bytesFinales;
}
public float getGanancia() {
return ganancia;
}
public void setRutaOriginal(String rutaOriginal) {
this.rutaOriginal = rutaOriginal;
}
public void setRutaNueva(String rutaNueva) {
this.rutaNueva = rutaNueva;
}
public void setBytesOriginales(int bytesOriginales) {
this.bytesOriginales = bytesOriginales;
}
public void setBytesFinales(int bytesFinales) {
this.bytesFinales = bytesFinales;
}
public void setGanancia(float ganancia) {
this.ganancia = ganancia;
}
}
Parece un poco bonito. Pero parece una pérdida de tiempo.
Las búsquedas de Google sobre "Cuándo usar el público en Java" y "¿Por qué no debería usar el público en Java" parecen discutir sobre un concepto de mutabilidad , aunque no estoy realmente seguro de cómo interpretar tales discusiones. Quiero que mi clase sea mutable, todo el tiempo.