Por que usar getters e setters (acessores) em Java se você pode simplesmente tornar os campos públicos?
Olá a todos! Comecei a estudar Java e POO, e surgiu uma dúvida. Frequentemente vejo que no código, para cada campo da classe, escrevem getters e setters. Por exemplo:
```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;
}
}
```
Mas poderia ser mais simples:
```java
public class Person {
public String name;
public int age;
}
```
E acessar diretamente: `person.name = "Vasya"`. Isso é mais curto e claro! Por que perder tempo escrevendo esses métodos? Entendo que tem a ver com encapsulamento, mas na prática não vejo diferença. Expliquem, por favor, para que realmente servem, e não apenas "porque é assim que se faz". Qual o sentido prático disso? Especialmente, como isso ajuda na hora de modificar o código no futuro?