¿Por qué se necesitan getters y setters (accessors) en Java si simplemente se pueden hacer los campos públicos?
¡Hola a todos! Empecé a estudiar Java y POO, y tengo una pregunta. A menudo veo que en el código para cada campo de una clase se escriben getters y setters. Por ejemplo:
```java
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
```
Pero se podría hacer más simple:
```java
public class Person {
public String name;
public int age;
}
```
Y acceder directamente: `person.name = "Vasya"`. ¡Es más corto y claro! ¿Por qué perder tiempo escribiendo estos métodos? Entiendo que tiene que ver con la encapsulación, pero en la práctica no veo la diferencia. Expliquen, por favor, para qué realmente se necesitan, y no solo "porque es costumbre". ¿Cuál es el sentido práctico? Me interesa especialmente cómo ayuda al modificar el código en el futuro.